1

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

我到底需要怎么做?我对 python 完全陌生,我是第一次使用它,只是因为我想向现有脚本添加一些功能。

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

我进行了一些研究,我想我可以使用这两个脚本之一https://github.com/moses-palmer/pystray或使用https://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()

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

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

4

1 回答 1

1

欢迎来到蟒蛇的世界!

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

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

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

于 2019-03-13T02:11:03.603 回答