将CMD Python应用程序移至系统托盘(Windows)

0 投票
1 回答
966 浏览
提问于 2025-04-18 15:51

我有一个用Python 2.7写的应用程序,我想把它从命令行窗口移到系统通知区(Windows 7)。现在这个Python脚本可以监听特定的TCP消息,并在收到后把它们记录到一个文件里。

我最近找到了一段关于系统托盘的代码,是在这里的另一个问题中找到的:

systrayicon

我通过创建SysTrayIcon.py模块,成功运行了systrayicon的演示代码。我的问题是,当我尝试把我的TCP应用程序和systrayicon一起运行时(保留了一些演示代码),它只能运行我的应用程序,或者系统托盘应用程序,而不能同时运行。更具体来说,如果我在调用systrayicon()之前列出我的应用程序的main(sys.argv),它只会运行我的应用程序,而没有托盘图标。如果我把systrayicon放在我的应用程序之前,它会运行系统托盘的演示,直到我选择“退出”,然后才会运行我的应用程序。

如果我把我的TCP应用程序放到菜单选择的某个功能里,它是可以正常运行的,例如:

def hello(sysTrayIcon): 
    main(sys.argv)

但我希望我的应用程序在打开时就开始监听,而不需要从菜单中选择什么来启动它。

这可能是一个非常基础的问题,可能表达得也不太好,抱歉。

1 个回答

0

我觉得你可以通过用一些简单的图形界面代码来包裹你的脚本,这样做是最简单的。你可以使用Tkinter或者wxPython这两个工具。这样你的程序就可以在系统托盘里运行了。因为听起来你的程序会一直运行,所以你可能需要把它放在一个线程里,这样它就不会阻塞图形界面的主循环。你可能还需要添加一些代码,让你的脚本在图形界面关闭时能够结束,但除此之外,其他的应该都挺简单的。

撰写回答