Задумал написать приложение, суть которого читать комп порт, парсить вывод и как то реагировать. Суть проблемы - интерфейс подвисает, намертво. {лишнее} .. Если кому не сложно объясните вкратце, что нужно для того, что бы реализовать такое без тормозов интерфейса. Я вроде в отдельном потоке делаю, но догадываюсь, что тут с сигналами что то нужно творить.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys, serial
try:
import thread
except ImportError:
import _thread as thread
import time
from PyQt4 import QtCore, QtGui
from cooker import Ui_MainWindow
class StartQT4(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
# here we connect signals with our slots
QtCore.QObject.connect(self.ui.btnRun,QtCore.SIGNAL("clicked()"), self.startRead)
def startRead(self):
thread.start_new_thread(self.file_dialog())
def file_dialog(self):
sys.stderr = sys.stdout
ser = serial.Serial('/dev/ttyACM0', 19200)
ser.write('V\r'.encode())
a = ''
while True:
try:
a = a + ser.readline().decode()
self.ui.testedit.setText(a)
time.sleep(2)
except KeyboardInterrupt:
ser.close()
break
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
myapp = StartQT4()
myapp.show()
sys.exit(app.exec_())
Грузится окно MainWindow, с кнопкой btnRun и текстовым полем testedit.