带有Web界面的Python桌面软件

时间:2013-02-28 01:31:49

标签: python html google-chrome

我正在使用Python后端和Web界面构建桌面软件。目前,我必须启动后端,然后在浏览器中打开界面。如果我不小心刷新了页面 - 那就清除了一切!我想要做的是启动应用程序并显示一个全屏浏览器窗口(使用Chrome) - 这不应该是困难的。我有两个问题:

  1. 可以刷新禁用吗?
  2. 当关闭Web UI时,是否可以挂钩关闭我的程序?
  3. 更新

    我正在寻找的更像是:geckofx。一种在桌面应用中嵌入Chrome网页的方法。除了我使用Python而不是C#

2 个答案:

答案 0 :(得分:1)

您的第一个问题是disable f5 and browser refresh using javascript的重复。

对于你的第二个问题,这取决于你正在构建什么样的应用程序,但一般来说,答案是否定的。

如果您可以依靠JS来捕获关闭,例如,在关闭之前向服务发送“退出”消息,这很容易。但是,有很多情况下无法正常工作,因为客户无法接近结束。

另一方面,如果您可以依赖客户端和服务之间的连续连接 - 例如,使用WebSocket - 您可以在连接断开时退出。但通常,你不能。

最后,如果您正在为一个平台专门编写一些内容,那么您可以使用操作系统级别的信息来处理JS无法处理的情况。 (例如,在OS X上,您可以将监听器附加到默认NSDistributedNotificationCenter,并在Chrome退出时收到通知。)但通常情况下,您不能依赖此,即使可以,也可能仍然不能覆盖100%的案件。

因此,您需要使用每个“真实”Web应用程序用于管理会话的相同技巧。例如,客户端可以每5分钟发送一次keepalive,如果5分钟没有收到任何请求,服务器可以退出。 (你仍然可以有一个明确的“退出”命令,你不能总是依赖它。)如果你想了解更多关于如何做到这一点的信息,那么关于它可能有300个问题。

答案 1 :(得分:1)

除了嵌入Chrome之外,您可能只嵌入了Webkit(我不知道在Windows上,但在Mac和Linux上很容易)。
应用程序逻辑接口位于服务器端,浏览器仅用作接口。如果是这种情况,你可以在body标签中加上“onbeforeunload”,然后调用一个向服务器发送ajax请求的js函数来死掉。