Я хочу отображать информацию в текстовом поле при нажатии кнопки

#python #subprocess #stdout #pygtk

#питон #подпроцесс #выход из строя #пигтк

Вопрос:

Код выполняется, и выходной файл также генерируется, но передняя часть приложения-это сценарий декодера зависания, который также выполняется в задней части, и информация также хранится в файле.

Проблема в том, что когда я убиваю декодер процесса kill -9, информация отображается в текстовом поле, и приложение также запущено, но я должен физически убить декодер в терминале, но я хочу отображать информацию, когда я нажимаю кнопку, то же самое, что и в файле, и в то же время ее отображение в поле textedit.

 from subprocess import Popen,PIPE  class demo(QWidget)   def __init__(self):  QWidget.__init__(self)  self.program_output = QPlainTextEdit()  self.program_output.setReadOnly(True)  self.program_output.setCenterOnScroll(True)  self.decode_btn = ThickPushButton('Decode')  self.decode_btn.clicked.connect(self.decode_scan)    @pyqtSlot(bool)  def decode_scan(self, checked):   print('Decoder Click')  self.decode_btn.setChecked(checked)  if checked:  #self.process_timer.stop()  #self.pre_process()  print('Running Tetra Decoder:')  #self.logger.debug('Start else')  #proc = subprocess.Popen(['/mnt/encrypted_fs/scripts/decoder'])  #with open('test.log', 'wb') as f:  self.process()  self.process_timer.stop()  self.proc = subprocess.Popen(['/mnt/encrypted_fs/scripts/decoder'], stderr=subprocess.STDOUT, stdout=subprocess.PIPE)  #proc.wait()  for line in iter(self.proc.stdout.readline, b''):  sys.stdout.write(line.decode(sys.stdout.encoding))   self.proc.wait()  #sleep(1)  self.pre_process()  self.process_timer.start()  #self.logger.debug('End else')  else:   print('Decoder Stopped')  if self.proc:  subprocess.Popen(f'sudo kill -9 {self.proc.pid 1}', shell=True).wait()  #self.proc = none