Pyside QProcess需要帮助

| 注意:类MyWindow(QWidget): 初始化
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捕获输出并在TextEdit中显示它们? (cmd.exe或Terminal的方式。它们在程序运行时显示输出) 谢谢 - 标记     
已邀请:
        您需要确保程序(本例中为2)在无缓冲stdout的情况下运行。除非写入控制台(
cmd.exe
或终端),否则大多数控制台应用程序都会缓冲,因为这样可以提高性能。大概Qt用来缓冲
QProcess
\'输出的内部流不会被视为ttys,这就是为什么要进行缓冲并且仅在末尾看到输出的原因。 通常,可以使C程序关闭缓冲(
setvbuf
),但是大多数不这样做。由于您需要使用
gcc
来工作,而
gcc
可以缓冲非ttys,因此您必须使用use7ѭ之类的实用程序。看到这个答案。     

要回复问题请先登录注册