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 或者终端的运行方式。 它们显示程序运行时的输出。

谢谢

--标记

时间: 原作者:

50 4

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

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

原作者:
...