0

我正在完成一个 python 程序,我将作为 exe 分发。我在 Windows 10 64b 上使用 Python 3.7。

用户将双击 exe 来运行我的程序。然后打开一个 Windows 控制台并在此控制台中显示日志。

我的程序不需要任何 gui,但我想为用户提供隐藏带有日志的控制台并在他/她想要从系统托盘中的图标时显示回来的可能性。

我在这里找到了各种答案,但没有一个能满足我的需求。

我想我不是那种想在我们的 python 脚本上使用这个选项的人。它可能非常有用。

我找到了一个在 python 中构建系统托盘图标的教程:

https://youtu.be/WM27fMo5Gg8

但它是关于打开 Windows 程序,而不是关于显示/隐藏它自己的控制台。

4

1 回答 1

0

经过进一步调查,我找到了解决方案。当我在终端中运行我的脚本时它可以工作。我仍然没有使用我的程序的 exe 进行测试。如果 .exe 文件需要一些额外信息,我可能会回到这里编辑我的答案。

  1. 我发现了这个用于 python 2 的著名脚本SystrayIcon.py,它可以帮助我非常快速地创建带有菜单的图标。
  2. 我在这里找到了这个脚本的 Python 3 版本。
  3. 然后我使用类型中的 GetConsoleWindow 和 win32gui 中的 ShowWindow 来隐藏和显示控制台。

    def 显示(系统托盘图标):

    the_program_to_hide = ctypes.windll.kernel32.GetConsoleWindow()
    
    win32gui.ShowWindow(the_program_to_hide, win32con.SW_SHOW)
    

    def 隐藏(sysTrayIcon):

    the_program_to_hide = ctypes.windll.kernel32.GetConsoleWindow()
    
    win32gui.ShowWindow(the_program_to_hide, win32con.SW_HIDE)
    

这两个功能连接到我的系统托盘图标的菜单。

我希望有一天它会对某人有所帮助。

PS:StackOverflow 编辑器错误,我无法正确显示 2 个函数的代码。

于 2020-05-07T12:20:30.633 回答