如何将系统托盘添加到python脚本?

时间:2019-03-13 00:53:44

标签: python systray

我想将系统托盘添加到现有的基于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()

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

我需要做什么才能使其正常工作?还是像我这样“愚蠢”的人有更简单的方法?

1 个答案:

答案 0 :(得分:1)

欢迎来到python的世界!

让我假设您将发布的脚本复制到python文件中,然后仅运行该文件,对吗?如果是这样,那么问题在于一旦执行了脚本,程序就会退出并带有托盘图标。

通过在命令窗口中运行python或(如果已安装ipython的话)启动交互式控制台,然后粘贴代码。您会看到托盘图标出现并停留。关闭控制台后,它便消失了。 (注:上面的代码使用print的python 2.x版本而不使用(),并且在python 3.x中使用print("Hello, World!")会导致错误。)

要执行此操作,您需要将此代码放在premiumizer的设置/初始化部分中的某个位置。在不知道这个项目的情况下,我无法在确切位置获得进一步的帮助。