如何在没有可执行文件的弹出控制台的情况下在Python中运行可执行文件?

时间:2017-08-14 08:42:44

标签: python windows console

所以,我有一个运行Tkinter GUI的python脚本,它有一个调用C语言可执行文件的按钮小部件。但是,每次我点击该按钮时,运行该C可执行文件的控制台会弹出然后关闭它已经完成了运行。我使用

调用可执行文件
import subprocess    
subprocess.call[args]

如何隐藏弹出窗口?因为我使用的是GUI,如果控制台无处可见,那就不太好了。

1 个答案:

答案 0 :(得分:3)

使用startupinfo classsubprocess.Popen()参数。

startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
startupinfo.wShowWindow = subprocess.SW_HIDE
subprocess.Popen(command, startupinfo=startupinfo)

如果您希望将参数传递给流程,则应将其作为数组传递给popen

subprocess.Popen(['program.exe','arg1','arg2'], startupinfo=startupinfo)

修改
正如Felix在评论中指出的那样,如果您希望孩子根本没有控制台,您应该使用DETACHED_PROCESS标志和subprocess.call

this MSDN页面中所述:

  

DETACHED_PROCESS 0x00000008 - 对于控制台进程,新进程不会继承其父进程   控制台(默认)。新进程可以调用AllocConsole   稍后运行以创建控制台。欲获得更多信息,   请参阅创建控制台。此值不能用于   CREATE_NEW_CONSOLE。

DETACHED_PROCESS = 0x00000008
subprocess.call('program.exe', creationflags=DETACHED_PROCESS)