pyside - python Pyside QProcess需要帮助

  显示原文与译文双语对照的内容
108 1

注释: 类 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中的输出,并在不等待进程完成的情况下显示它们。( cmd.exe 或者终端的运行方式。它们显示程序运行时的输出。

谢谢

--标记

时间:原作者:0个回答

50 4

你需要确保程序( 。gcc 中的) 运行时没有缓冲。大多数控制台应用程序缓冲区,除非写入控制台( cmd.exe 或者终端),否则会提高性能。可以以看到,Qt使用的内部流缓冲 QProcess 输出不被看作是 tmodel,这就是为什么你得到缓冲的原因。

通常,可以以使用C 程序来关闭缓冲区,但大多数不会这样做。因为你需要使用 gcc,因为它的presunably缓冲区不能使用,因这里你将使用 unbuffer 类似的实用工具。请看这个答案。

原作者:
...