如何在python中隐藏控制台窗口?

66 python console hide

我正在用Python编写IRC bot.

我希望为Linux和Windows制作独立的二进制文件.主要是我希望当机器人启动时,控制台窗口应该隐藏,用户不应该看到窗口.

我能做些什么?

mde*_*dec 100

只需使用.pyw扩展名保存即可.这将阻止控制台窗口打开.

在Windows系统上,没有"可执行模式"的概念.Python安装程序会自动将.py文件与python.exe相关联,这样双击Python文件就会将其作为脚本运行.扩展名也可以是.pyw,在这种情况下,通常显示的控制台窗口被抑制.

第2.2.2节底部的说明

  • 该链接中没有第2.2.2节.你为什么不在这里发布解释? (2认同)
  • 有第 2.2.2 节。https://docs.python.org/2.6/tutorial/interpreter.html#executable-python-scripts (2认同)

Cha*_*tin 30

在linux中,只需运行它,没问题.在Windows中,您希望使用pythonw可执行文件.

更新

好的,如果我在评论中理解了这个问题,你就会问如何在命令行中启动机器人的命令窗口随后消失?

  • UNIX(Linux)

$ nohup mypythonprog&

  • 视窗

C:/>启动pythonw mypythonprog

认为这是对的.无论如何,现在你可以关闭终端了.

  • 将文件扩展名更改为 .pyw 以与 pythonw.exe 关联 http://oreilly.com/catalog/pythonwin32/chapter/ch20.html (2认同)
  • 哦,我懂。实际上 unix == UNIX 并且不要骚扰你的长辈。 (2认同)

noɥ*_*ɐɹƆ 17

在Unix系统上(包括Linux,macOS和BSD)

使用nohup mypythonprog &,您可以在不中断过程的情况下关闭终端窗口.exit如果您在云中运行并且不想保留挂起的shell进程,也可以运行.

在Windows系统上

使用.pyw扩展程序保存程序,现在它将打开pythonw.exe.没有shell窗口.

例如,如果有foo.py,则需要将其重命名为foo.pyw.


小智 10

如果您只想在安装了Python解释器的Windows计算机上运行Python脚本,那么将保存的脚本的扩展名从".py"转换为".pyw"就可以了.

但是,如果您使用py2exe将脚本转换为可在任何Windows机器上运行的独立应用程序,则需要对"setup.py"文件进行以下更改.

以下示例是使用Tkinter创建的简单python-GUI:

from distutils.core import setup
import py2exe
setup (console = ['tkinter_example.pyw'],
       options = { 'py2exe' : {'packages':['Tkinter']}})
Run Code Online (Sandbox Code Playgroud)

将上面代码中的"console"更改为"windows"..

from distutils.core import setup
import py2exe
setup (windows = ['tkinter_example.pyw'],
       options = { 'py2exe' : {'packages':['Tkinter']}})
Run Code Online (Sandbox Code Playgroud)

这只会打开Tkinter生成的GUI而不会打开控制台窗口.


Moh*_*adi 8

这将隐藏您的控制台。首先在代码中实现此行,以便首先开始隐藏控制台。

import win32gui, win32con

The_program_to_hide = win32gui.GetForegroundWindow()
win32gui.ShowWindow(The_program_to_hide , win32con.SW_HIDE)
Run Code Online (Sandbox Code Playgroud)

  • 这让我摆脱了一个恼人的问题,谢谢:) (2认同)

Sni*_*pro 6

一些额外的信息。对于需要 Mohsen Haddadi 在本主题前面发布的 win32gui 解决方案的情况:

从 python 361 开始, win32gui 和 win32con 不是 python std 库的一部分。要使用它们,需要安装 pywin32 包;现在可以通过 pip。

有关 pywin32 包的更多背景信息位于:How to use the win32gui module with Python?.

此外,为了在关闭窗口时应用自由裁量权,以免无意中关闭前景中的任何窗口,可以按照以下方式扩展分辨率:

try     :

    import win32gui, win32con;

    frgrnd_wndw = win32gui.GetForegroundWindow();
    wndw_title  = win32gui.GetWindowText(frgrnd_wndw);
    if wndw_title.endswith("python.exe"):
        win32gui.ShowWindow(frgrnd_wndw, win32con.SW_HIDE);
    #endif
except  :
    pass
Run Code Online (Sandbox Code Playgroud)

  • 在本地主机上的 Cgi 服务器 (http.server) 等用例中,使用 .pyw 扩展名可能不是解决方案。因为,在这种情况下,尽管有 .pyw 扩展名,python 脚本最终还是由 python.exe 执行。 (2认同)

Moh*_*lah 6

编写代码后,您想要将文件从 转换.py.exe,因此您可能会使用pyinstaller并且制作文件很好exe。所以你可以通过这种方式隐藏控制台:

pyinstaller --onefile main.py --windowed
Run Code Online (Sandbox Code Playgroud)

我曾经用过这种方法并且有效。