【问题标题】:How to add systemtray to python script?如何将系统托盘添加到 python 脚本?
【发布时间】:2019-03-13 00:53:44
【问题描述】:

我想在现有的基于 python 的项目中添加一个系统托盘:https://github.com/piejanssens/premiumizer

我究竟需要怎么做?我对 python 完全陌生,我是第一次使用它,只是因为我想在现有脚本中添加一个小功能。

我想要实现的是,当脚本运行时,应该有一个系统托盘图标,如果双击它会打开http://localhost:5000。如果它被右键单击,应该有一个退出/退出选项。

我研究了一下,我想我可以使用这两个脚本之一https://github.com/moses-palmer/pystrayhttps://github.com/Infinidat/infi.systray 来实现它(我还读到应该使用 infi.systray,因为它不依赖于 pywin32,因为它使用ctypes 库,因为它是标准 Python 库的一部分)。

所以我尝试将此代码添加到 premiumizer.py 文件中进行测试:

from infi.systray import SysTrayIcon
    def say_hello(systray):
        print "Hello, World!"
    menu_options = (("Say Hello", None, say_hello),)
    systray = SysTrayIcon("icon.ico", "Example tray icon", menu_options)
    systray.start()

但现在控制台会立即自行关闭。我如何检查出了什么问题?错误日志是否保存在某处?

我需要做什么才能让它工作?或者对于像我这样“愚蠢”的人有没有更简单的方法?

【问题讨论】:

  • 您能否提供一个独立的完整示例来展示您需要帮助的错误行为?

标签: python systray


【解决方案1】:

欢迎来到 python 的世界!

假设您将发布的脚本复制到 python 文件中并运行该文件,对吗?如果是这样,问题是一旦脚本被执行,程序就会退出,托盘图标也会随之退出。

通过在命令窗口中运行 python 或(如果您安装了 ipython)启动交互式控制台并粘贴您的代码。您会看到托盘图标出现并保持不变。关闭控制台后它就会消失。 (备注:上面的代码使用了python 2.x版本的print,没有(),在python 3.x中会报错,这里使用print("Hello, World!")。)

要完成这项工作,您需要将此代码放在 premiumizer 的设置/初始化部分的某个位置。在不知道这个项目的情况下,我无法提供进一步的帮助。

【讨论】:

  • 非常感谢您的留言,是的,我只是尝试将代码放在那里。 Premiumizer 脚本基于 Python 3.x,因此感谢您提供有关如何在此处使用 print 命令的提示。可悲的是,我还不太了解 python 代码(我刚开始使用它,几个小时前才第一次开始研究这个)要启动脚本,我需要启动这个脚本:github.com/piejanssens/premiumizer/blob/master/premiumizer/… 所以我假设初始化可能会在文件开头的某个地方发生。你能
  • 也许能给我一个提示要寻找什么? (或者如果要求检查链接的 .py 文件是否有正确的行让我插入此代码)
  • 在第 2355 行(启动网络服务器)之前是一个选项。该项目使用烧瓶 (flask.pocoo.org) 作为框架,如果您想深入了解,可能值得阅读他们的文档。
  • 我可以把“测试”代码放在那里而不立即关闭吗?
  • 是的,如果您在第 2354 行和第 2355 行之间粘贴上面的代码并进行正确的缩进,则服务器应该启动并且只要服务器正在运行,任务图标就会出现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-31
  • 2022-07-08
  • 2016-05-10
  • 2011-12-16
  • 1970-01-01
  • 2019-08-18
  • 1970-01-01
相关资源
最近更新 更多