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.
Código:
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
" % 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())