PyQt5 - Automatizar módulo serie
Estoy tratando de automatizar la conexión en serie sin hacer clic en el botón. Cuando se carga la interfaz gráfica de usuario, la serie debe leerse de inmediato y actualizarse a intervalos sin usar el mouse para activar ningún botón (que se lee y actualiza automáticamente).
¿Cómo es posible esto? Ver script y GUI a continuación.
import schedule
import serial
import sys
from PyQt5 import uic, QtWidgets
qtCreatorFile = "gui.ui"
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)
estudiantes = [' ',' ',' ',' ']
ser = serial.Serial('COM9', baudrate=9600, timeout=1)
class MyApp(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
QtWidgets.QMainWindow.__init__(self)
Ui_MainWindow.__init__(self)
self.setupUi(self)
self.Boton.clicked.connect(self.ingresos)
#self.ingresos()
def ingresos(self):
dato = ser.readline().decode('ascii')
#datos = (self.Box4.toPlainText())
#dato = str(datos)
estudiantes.insert(0,dato)
estudiantes.pop()
self.Box1.setText(estudiantes[0])
self.Box2.setText(estudiantes[1])
self.Box3.setText(estudiantes[2])
self.Box4.setText(estudiantes[3])
#self.Box1.setText("estudiantes")
# =============================================
def job():
# print("I'm working...")
dato = ser.readline().decode('ascii')
#datos = (self.Box4.toPlainText())
#dato = str(datos)
estudiantes.insert(0,dato)
estudiantes.pop()
self.Box1.setText(estudiantes[0])
self.Box2.setText(estudiantes[1])
self.Box3.setText(estudiantes[2])
self.Box4.setText(estudiantes[3])
#self.Box1.setText("estudiantes")
# .......................
schedule.every(0.05).minutes.do(job)
while True:
schedule.run_pending()
time.sleep(1)
# .... Time definition ....
# 0.05 = 05 Seconds
# 0.50 = 50 Seconds
# 5.00 = 05 Minutes
# =============================================
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = MyApp()
window.show()
sys.exit(app.exec_())
El archivo .ui de la GUI de PyQt5 esAQUÍ....