windows下PyQt 调用命令行避免弹出黑框的方法

2021年09月15日 阅读数:1
这篇文章主要向大家介绍windows下PyQt 调用命令行避免弹出黑框的方法,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

通常在pycharm里面直接运行代码时候还好,可是经过pyinstaller打包成exe以后,再调用命令行下的命令时候,主界面背后会弹出来一个黑色框,影响使用体验。python

关键的作法是在subprocess.Popen里面传一个startupinfo对象,其中指定wShowWindow属性。命令行

具体参考python手册:
code

一个例子以下:对象

    def run_cmd(self):
        if self.cmd:
            st = subprocess.STARTUPINFO()
            st.dwFlags = subprocess.STARTF_USESHOWWINDOW
            st.wShowWindow = subprocess.SW_HIDE
            p = subprocess.Popen(self.cmd, stdin=subprocess.PIPE,
                                 stdout=subprocess.PIPE,
                                 stderr=subprocess.PIPE,
                                 startupinfo=st)
            retcode = p.poll()
            while retcode is None:
                content = p.stdout.readline().decode("gbk")
                self.runStateChanged.emit(content)
                retcode = p.poll()
            self.runStateChanged.emit("ret code:%d" % retcode)