隐藏subprocess时的console窗口

  • Post author:
  • Post category:其他


我使用PyQt编写了一个工具,代码中使用了第三方命令行的SDK,使用py2exe打包为exe程序后,由于第三方SDK是命令行形式的,所以会循环的出现console窗口,十分不美观,所以在网上一直在找相关的方法,终于找到了解决的方法,

代码如下:

import subprocess,sys

IS_WIN32 = 'win32' in str(sys.platform).lower()

def subprocess_call(*args, **kwargs):
    #also works for Popen. It creates a new *hidden* window, so it will work in frozen apps (.exe).
    if IS_WIN32:
        startupinfo = subprocess.STARTUPINFO()
        startupinfo.dwFlags = subprocess.CREATE_NEW_CONSOLE | subprocess.STARTF_USESHOWWINDOW
        startupinfo.wShowWindow = subprocess.SW_HIDE
        kwargs['startupinfo'] = startupinfo
    retcode = subprocess.call(*args, **kwargs)
    return retcode

例子用的是subprocess的call方法,大家可以自行替换为Popen即可。

结合官方文档,我大致解释如下:

sys.platform会输出当前操作系统的信息

subprocess.START



版权声明:本文为ztb3214原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。