【问题标题】:How to close command line window after closing script running on web browser?关闭在网络浏览器上运行的脚本后如何关闭命令行窗口?
【发布时间】:2020-07-10 18:04:52
【问题描述】:

我正在通过 cmd 运行 dash 应用程序,在关闭运行 dash 应用程序的 Web 浏览器 (https//127.0.0.1/8050) 后,我想关闭最初运行程序的命令行窗口.知道该怎么做吗?

【问题讨论】:

  • 你能澄清一下这个问题吗?通常命令行窗口的右上角有小“X”。为什么你不能关闭你的命令行窗口?
  • @np8 我可以通过按“X”按钮手动关闭 cmd 行窗口,但我想知道是否可以编写一些代码,在我关闭我的 dash 应用程序时自动关闭 cmd 窗口即网络浏览器
  • 制作这样的功能将非常棘手,因为当浏览器/选项卡关闭时,Web 浏览器不会向网页发送任何内容。但是,我想它仍然可能以某种方式实现,因为像 facebook 这样的大公司可能会以某种方式记录用户的屏幕时间并知道用户何时“活跃”。因此,第一步是为您的 web 应用程序创建一些逻辑,以检查是否有用户连接到您的页面。也许这将是另一个 SO 问题,其他人也可能对此感兴趣?
  • 我问了here这个问题。当用户数归零时,您可以关闭您的 web 应用程序。
  • @np8 很公平。如果不是这样,那么当我关闭 Web 浏览器时,您知道如何关闭开发服务器(运行我的 dash 应用程序的 Flask 服务器)吗?通常我会关闭浏览器,然后在 CLI 中按“Ctrl+C”退出 Flask 服务器,但是有没有可以自动执行此步骤的代码?

标签: python browser command-line-interface plotly-dash


【解决方案1】:

您需要为此编写一个小的 javascript 函数。因此,首先从命令行启动应用程序时,获取启动进程的process id,并将其传递给dash 中的变量。检索此进程 ID 的方法有很多。

然后是 javascript 中的事件侦听器,如下所示:

window.addEventListener('beforeunload', function (e) {
    e.preventDefault();
    e.returnValue = '';
});

最后使用您在开始时收集的进程 ID 添加一个终止事件

GetObject("winmgmts:").Get("Win32_Process.Handle='" + pid + "'").Terminate();

这里是 documentation,用于向 dash 应用程序添加额外的 js。

【讨论】:

  • 感谢您的帮助,但解决方案无效。我在 /assets 目录中创建了一个 .js 文件,并在将 processid 存储在变量 'pid' 中后编写了您在该文件中给出的代码
  • 你得到的错误是什么?如果您将代码 sn-ps 添加到您的问题中以显示您尝试过的内容,它会更容易提供帮助。
猜你喜欢
  • 2011-09-03
  • 2014-04-12
  • 2011-09-30
  • 2015-01-28
  • 2012-10-30
  • 1970-01-01
  • 2013-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多