Python Pyside QProcess需要帮助吗

Python Pyside QProcess需要帮助吗,python,pyside,qprocess,Python,Pyside,Qprocess,注意:类MyWindow(QWidget): 在init中 self.proc = QtCore.QProcess(self) self.te = QTextEdit(self) self.btn = QPushButton("Execute", self) self.btn.clicked.connect(self.__event_btn) 现在我有这个: def __event_btn(self): w_dir = "" # This set to my working di

注意:类MyWindow(QWidget):

init中

self.proc = QtCore.QProcess(self)
self.te   = QTextEdit(self)
self.btn  = QPushButton("Execute", self)
self.btn.clicked.connect(self.__event_btn)
现在我有这个:

def __event_btn(self):
    w_dir = "" # This set to my working directory where my C files are
    args  = ["-o", "MyFile", "MyFile.c"]
    cmd   = "gcc"

    self.proc.setWorkingDirectory(dir)
    self.proc.readyReadStandardOutput.connect(self.__read)
    self.proc.closeWriteChannel()
    self.proc.setReadChannel(QtCore.QProcess.StanfardOutput())
    self.proc.start(cmd, args)

def __read(self):
    self.te.setText(self.proc.readAllStandardOutput)
在执行完流程之前,上面的代码不会显示任何内容

现在我的问题是,是否有任何方法可以捕获gcc的输出并在文本编辑中显示它们,而不必等待流程完成?(cmd.exe或teminal的方式。它们在程序运行时显示输出)

谢谢

--
标记

您需要确保程序(
gcc
在本例中)在stdout未缓冲的情况下运行。大多数控制台应用程序都会缓冲,除非写入控制台(
cmd.exe
或终端),因为这样可以提高性能。Qt用来缓冲
QProcess
”输出的内部流可能不被视为tty,这就是为什么您得到缓冲,并且只在最后看到输出的原因

通常,可以让C程序关闭缓冲(
setvbuf
),但大多数程序不会这样做。由于您需要使用
gcc
,它假定为非tty缓冲区,因此必须使用类似
unbuffer
的实用程序。看