Я хотел бы знать, как детерминированно прочитайте стандартный вывод подпроцесса с помощью PySide6, если это вообще возможно.
Вот минимальный пример кода для родительского процесса:
Код: Выделить всё
import sys
from PySide6.QtCore import QCoreApplication, QProcess, QByteArray
class ProcessExample:
def __init__(self):
self.process = QProcess()
self.process.readyRead.connect(self.handle_stdout)
self.process.readyReadStandardError.connect(self.handle_stderr)
self.process.errorOccurred.connect(self.handle_process_error)
self.process.stateChanged.connect(self.current_process_state)
self.process.finished.connect(self.handle_finished)
def start_process(self):
self.process.start("python", ['test_qprocess_program.py'])
self.process.waitForStarted()
def write_to_process(self, message):
print("No. bytes written: ", self.process.write(message))
self.process.waitForReadyRead()
def handle_stdout(self):
print('u')
def handle_stderr(self):
error_output: QByteArray = self.process.readAllStandardError()
print("Standard Error Output:")
print(error_output)
def current_process_state(self, state):
print(state)
def handle_process_error(self, error):
print('Process error:')
print(error)
def handle_finished(self):
print("End")
app = QCoreApplication(sys.argv)
p = ProcessExample()
p.start_process()
app.exec()
Код: Выделить всё
[print(i**2, flush=True) for i in range(10)]
Подробнее здесь: https://stackoverflow.com/questions/793 ... subprocess
Мобильная версия