簡體   English   中英

PyQt:並非每個應用程序都捕獲異步控制台輸出

[英]PyQt: Async console output not captured with every application

我試圖以命令行模式啟動Arduino IDE,並將標准輸出返回到我的PyQt應用程序中,如下所示:

def recvConsoleOutput(self, output):
    print(output)

def upload(self):
    [...]
    cmd = [ARDUINO_PATH,
           '--verbose',
           '--upload', os.path.join(os.getcwd(), 'sketch', 'sketch.ino'),
           '--port', self.serialPort.currentText(),
           '--board', 'arduino:avr:leonardo']
    cmd = ' '.join(cmd)

    proc = AsyncProcess(cmd, self.recvConsoleOutput, parent=self)
    proc.start()

它在QMainWindow函數中被調用,並且可以正常工作(Arduino IDE上傳了草圖!),但事實是它不會像在常規Windows命令提示符下那樣輸出任何消息。

AsyncProcess類如下所示:

from PyQt5.QtCore import QObject
from PyQt5.Qt import QProcess


class AsyncProcess(QObject):
    def __init__(self, path, slot, parent=None):
        super().__init__(parent)
        self.path = path
        self.proc = None
        self.slot = slot

    def start(self):
        self.proc = QProcess(self)
        self.proc.readyReadStandardOutput.connect(self.readStandardOutput)
        self.proc.readyReadStandardError.connect(self.readStandardError)
        self.proc.start(self.path)

    def readStandardOutput(self):
        procOutput = self.proc.readAllStandardOutput()
        self.slot(procOutput)

    def readStandardError(self):
        procOutput = self.proc.readAllStandardError()
        self.slot(procOutput)

如果我開始“ ping 127.0.0.1”而不是Arduino,則由於某種原因它可以工作。

有任何想法嗎?

好的,我是小伙子。 在某個時候,IDE的開發人員決定僅在指定的調試版本中輸出我所需的信息……我實際上在調用錯誤的可執行文件……

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM