Russian Qt Forum

Qt => Вопросы новичков => Тема начата: tw2j от Февраль 16, 2020, 08:34



Название: Обновление содержания QTextEdit в цикле while
Отправлено: tw2j от Февраль 16, 2020, 08:34
Доброго времени суток, уважаемые. Новичок в программировании, ваяю программку для опроса стороннего устройства по modbus tcp на python 3, надеюсь на помощь.
Возникла следующая проблема: мне нужно обновлять значение QTextEdit (text_03), пока нажат (while) checkBox_02, пытаюсь в text_03 выводить переменную, которая периодически изменяет свое значение. НО при старте функции - виснет приложение, цикл начинает обрабатывать первоначальное значение переменной, но когда переменная меняет своё значение - то QTextEdit виснет и не выводит далее ничего. Пробую стирать QTextEdit и ставить/не ставить time.sleep - не помогает.

Код
Python
import sys
import time, sched, gettext
 
 
from app_mb_original import read, write_block, write_unclock
from try228 import *
from app_define_bits import define_bits, recoding_status
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
 
 
 
class MyWin(QtWidgets.QMainWindow):
   def __init__(self, parent=None):
       QtWidgets.QWidget.__init__(self, parent)
       self.timer = QTimer()
       self.ui = Ui_MainWindow()
       self.ui.setupUi(self)
       self.ui.checkBox_02.clicked.connect(self.call_checkbox_02)
 
 
   def call_read(self):
       x = int(self.ui.text_01.toPlainText())
       y = int(self.ui.text_02.toPlainText())
       a = read(reg_add=x, reg_nb=y)
       d = define_bits(n=a[1])
       f = recoding_status(mnm=d)
       self.ui.text_03.setText(f)
       self.ui.text_03.repaint()
       time.sleep(2)
       self.ui.text_03.clear()
       self.ui.text_03.repaint()
 
   def call_checkbox_02(self):
       while self.ui.checkBox_02.isChecked():
           self.call_read()
 
 
if __name__ == "__main__":
   app = QtWidgets.QApplication(sys.argv)
   myapp = MyWin()
   myapp.show()
   sys.exit(app.exec_())