所以,我有一个运行Tkinter GUI的python脚本,它有一个调用C编写的可执行文件的button小部件。但是,每次单击该button,运行该C可执行文件的控制台都会popup,然后在完成运行后closures。 我使用可执行文件调用
import subprocess subprocess.call[args]
如何隐藏popup? 因为我正在使用GUI,如果控制台没有popup,它也不好。
使用startupinfo
subprocess.Popen()
类的 startupinfo
参数。
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
。
如此 MSDN页面中所述:
DETACHED_PROCESS 0x00000008 – 对于控制台进程,新进程不会继承其父级控制台(缺省值)。 新进程可以在稍后调用AllocConsole函数来创建控制台。 有关更多信息,请参阅创建控制台。 该值不能与CREATE_NEW_CONSOLE一起使用。
DETACHED_PROCESS = 0x00000008 subprocess.call('program.exe', creationflags=DETACHED_PROCESS)