【问题标题】:How to stop console from poping up when command is called from python GUI?从python GUI调用命令时如何阻止控制台弹出?
【发布时间】:2015-10-26 18:01:43
【问题描述】:

我为我的应用程序制作了一个 GUI。所有脚本都在 Python (2.7) 中,并且 GUI 是用 Tkinter 创建的。我在 Linux 上工作,但我需要这个应用程序可以在 Windows 上执行。所以我使用 py2exe 来创建一个可执行文件。过了一会儿,它几乎可以完美地工作了,但是我遇到了以下问题:

在应用程序的某个地方,我需要调用外部程序,即 ImageMagick 和 LaTeX。我使用命令convert, pdflatex,只需导入os 模块并运行os.system(build),其中build = 'convert page.pdf page.gif'等。当从 *.exe 应用程序调用这些命令时,控制台会弹出(意味着控制台窗口会打开一秒钟然后再次关闭)。 有没有办法防止这种行为?

它不会中断应用程序,但它是丑陋的,不是理想的行为。

[注意]我选择添加任何样本,因为有很多文件和其他内容,我认为这与问题无关。但是,我可以尝试发布最小(不)工作示例。但也许不需要。

谢谢!

【问题讨论】:

标签: python windows tkinter console py2exe


【解决方案1】:

import subprocess subprocess.Popen("application.exe", shell = True)

【讨论】:

  • 如果您使用受信任的命令并需要 shell,那么设置 shell=True 是配置 startupinfo 以隐藏控制台窗口的简单方法。这使用%ComSpec% /c(例如%SystemRoot%\System32\cmd.exe /c)运行命令,就像os.system一样。但是,我更喜欢使用shell=False 并将creationflags 参数设置为DETACHED_PROCESS (8)。使用此选项,不会为标记为控制台应用程序(例如 cmd.exe、powershell.exe、python.exe)的可执行文件创建控制台窗口,因为子进程不会启动控制台主机 conhost.exe 的实例.
猜你喜欢
  • 1970-01-01
  • 2016-01-29
  • 2011-12-21
  • 2011-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-28
  • 1970-01-01
相关资源
最近更新 更多