所以,我有一个运行Tkinter GUI的python脚本,它有一个调用C语言可执行文件的按钮小部件。但是,每次我点击该按钮时,运行该C可执行文件的控制台会弹出然后关闭它已经完成了运行。我使用
调用可执行文件import subprocess
subprocess.call[args]
如何隐藏弹出窗口?因为我使用的是GUI,如果控制台无处可见,那就不太好了。
答案 0 :(得分:3)
使用startupinfo
class的subprocess.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)