我想要寫入到某個子進程中的標準輸出中,顯示在Qt小部件中。獲取要顯示在Qt小部件中的子進程的標準輸出
我開始的過程是這樣的:
import subprocess
subprocess.call(["program_name", "arguments"])
我想我必須作出一個類表現得像標準輸出,並指出來的時候我叫子,我嘗試這樣做:
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的:「登錄」對象有沒有屬性「的fileno」
真的不能相信任何其他的想法,除了重定向到一個文件,然後就吃克定時器,從中讀取不時..
[編輯]
結束了與此:
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)
感謝您的幫助!
我結束了使用QProcess並收聽'readyReadStandardOutput'信號。它運作良好,謝謝! – drk