01-12-2020, 02:18 PM
Hola amigos, necesito ayuda, estoy aprendiendo a trabajar con visual python, en este momento estoy usando pyQT, pero mi pregunta radica en el uso de hilos.
Mi aplicación recibe datos de un dispositivo todo el tiempo a través del protocolo Modbus, y esto se hace en un hilo diferente al programa principal de la aplicación visual, es decir, el problema está que desde ese hilo no puedo modificar ninguna variable del programa principal o variable global.
Resumiendo, necesito desde el hilo Rx_Thread (), recibir un dato y mostrarlo en un textEdit del programa principal.
Mi aplicación recibe datos de un dispositivo todo el tiempo a través del protocolo Modbus, y esto se hace en un hilo diferente al programa principal de la aplicación visual, es decir, el problema está que desde ese hilo no puedo modificar ninguna variable del programa principal o variable global.
Resumiendo, necesito desde el hilo Rx_Thread (), recibir un dato y mostrarlo en un textEdit del programa principal.
- from PyQt5 import QtWidgets
- from Test_ui import Ui_MainWindow
- import sys
- from pyModbusTCP.client import ModbusClient
- import time, threading
-
- c=ModbusClient(host="127.0.0.1", port=502, auto_open=True)
- text = "Hola"
-
- class Main (QtWidgets.QMainWindow):
- def __init__(self):
- super (Main, self).__init__()
- self.ui = Ui_MainWindow()
- self.ui.setupUi (self)
-
- def Rx_Thread (): #este es el hilo que recibe los datos
- while (True):
- reg = c.read_holding_registers(0, 5)
- time.sleep(1)
- if reg:
- #self.ui.textEdit.setPlainText("%s\n" % text) #esto es lo que quiero modificar
- print(reg)
- else:
- print("not")
-
- _thread = threading.Thread(name='Rx_Thread',target=Rx_Thread, daemon = True)
- _thread.start()
-
-
- if __name__ == '__main__':
- app=QtWidgets.QApplication([])
- main_app = Main()
- main_app.show()
- sys.exit(app.exec())