我有一个python 2.7应用程序,我想从CMD窗口移动到系统/通知托盘(Windows 7)。 python脚本当前侦听特定的TCP消息,并在收到后将其记录到文件中。
我最近发现了以下系统托盘代码,来自此处回答的另一个问题:
我已经能够通过创建SysTrayIcon.py模块正确运行systrayicon演示了。我的问题是,当我尝试在systrayicon旁边运行我的TCP应用程序(其中一些演示代码完好无损)时,它只运行我的应用程序或系统托盘应用程序,而不是两者。更具体地说,如果我在systrayicon()之前列出我的应用程序的主(sys.argv),它只运行我的应用程序没有托盘图标。如果我在我的应用程序之前列出了systrayicon,它会运行系统托盘演示,直到我选择“退出”,然后运行我的应用程序。
如果我将其插入其中一个菜单选择功能,我可以让我的TCP应用程序正确运行,例如:
def hello(sysTrayIcon):
main(sys.argv)
但我希望我的应用程序在打开应用程序时开始收听,而不从菜单中选择任何内容来启动它。
这可能是一个非常基本的问题,也许说得不好,我的道歉。
答案 0 :(得分:0)
我认为实现这一目标的最简单方法是使用Tkinter或wxPython将一小段GUI代码包裹起来。然后它可以驻留在托盘中。您可能需要在线程中运行脚本,因为它听起来像是一个长时间运行的进程,会阻塞工具包的主循环。您可能需要在线程代码中添加一些代码,以便在GUI退出时终止您的脚本,但除此之外,它应该非常简单。