为了账号安全,请及时绑定邮箱和手机立即绑定

获取要在Qt小部件中显示的子流程的标准输出

获取要在Qt小部件中显示的子流程的标准输出

MYYA 2021-03-19 10:08:46
我试图在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 )


查看完整回答
反对 回复 2021-03-27
  • 2 回答
  • 0 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信