我正在完成一个python程序,该程序将作为exe分发。我在Windows 10 64b上使用Python 3.7。
用户将双击exe来运行我的程序。然后打开一个windows控制台并在此控制台中显示日志。
我的程序不需要任何gui,但我想让用户有可能用日志隐藏控制台,并随时从systray中的图标中显示出来。
我在这里找到了各种各样的答案,但没有一个能满足我的需求。
我想我不是那个想在我们的python脚本上有这个选项的人。这可能非常有用。
我发现了一个在python中构建systray图标的教程:
https://youtu.be/WM27fMo5Gg8
但这是关于打开windows程序,而不是显示/隐藏自己的控制台。
经过进一步调查,我找到了解决方案。当我在终端中运行脚本时,它就起作用了。我仍然没有用我的程序的exe进行测试。如果.exe文件需要一些额外的信息,我可能会回到这里编辑我的答案。
- 我为python 2找到了这个著名的脚本SystrayIcon.py,它可以帮助我快速创建带有菜单的图标
- 我在这里找到了这个脚本的Python 3版本
-
然后,我使用类型中的GetConsoleWindow和win32gui中的ShowWindow来隐藏和显示控制台。
def-show(sysTrayIcon(:
the_program_to_hide = ctypes.windll.kernel32.GetConsoleWindow() win32gui.ShowWindow(the_program_to_hide, win32con.SW_SHOW)
def-hide(sysTrayIcon(:
the_program_to_hide = ctypes.windll.kernel32.GetConsoleWindow() win32gui.ShowWindow(the_program_to_hide, win32con.SW_HIDE)
这两个功能连接到我的systray图标的菜单。
我希望有一天它能帮助到别人。
附言:StackOverflow编辑器错误,我无法正确显示这两个函数的代码。