我试图在Qt小部件中显示子进程中写到stdout的内容。我正在以这种方式开始该过程:import subprocesssubprocess.call(["program_name", "arguments"])我想我必须让一个类像stdout一样工作,并在调用子流程时指出来,我尝试了以下方法:class Log: def __init__(self, qtWidget): self.qtWidget = qtWidget def write(self, data): self.qtWidget.append(data)# (...)log = Log(theWidget)sub.process.call(["program_name", "arguments"], stdout=log)但我收到一条错误消息:AttributeError:'Log'对象没有属性'fileno'除了重定向到文件然后有一个不定期读取文件的计时器外,我真的想不出任何其他主意。
2 回答
宝慕林4294392
TA贡献2021条经验 获得超8个赞
最终这样:
process = QProcess()
process.setProcessChannelMode( QProcess.MergedChannels )
process.start( "program_name", [ "arguments" ] )
process.readyReadStandardOutput.connect( aFunction )
# then in the function...
outputBytes = process.readAll().data()
outputUnicode = outputBytes.decode( 'utf-8' )
messageWidget.append( outputUnicode )
添加回答
举报
0/150
提交
取消