Threading + GUI (Tkinter) python
Publicado por Juliana (1 intervención) el 20/01/2019 22:40:49
Estoy haciendo una interfaz de usuario con python, tengo por un lado la GUI realizada en tkinter y un Main program que me devuelve los valores que voy a mostrar en dicha interfaz pero tengo un problema y es que el programa es un poco lento por lo que tome la decisión de implementar Threading, realice el programa que consta de: Thread 1: Leer sensores Thread 2: Guardar valores en un documento de texto por cada sensor pero aqui viene mi pregunta, ya que no se como devolver esos valores a mi Script de la interfaz. anteriormente mi programa era de esta forma
Simplemente llamaba esa funcion a mi programa del GUI, pero cuando implemento threading intente hacer un thread que me devuelva el valor pero simplemente queda y no corre mas el programa, el codigo siguiente es el que implemente los threads pero sin el de return datos porque no se bien como debo hacerlo.
Espero que puedan ayudarme
1
2
3
4
5
6
7
8
def MainProgram(direcciones):
datosSensor=[]
for i in range(len(direcciones)):
direccion=direcciones[i]
datos=ReadInformation.Read(direccion)
SaveInformation.Savetxt(datos)
datosSensor.append(datos)
return datosSensor
Simplemente llamaba esa funcion a mi programa del GUI, pero cuando implemento threading intente hacer un thread que me devuelva el valor pero simplemente queda y no corre mas el programa, el codigo siguiente es el que implemente los threads pero sin el de return datos porque no se bien como debo hacerlo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def read_sensor(direccion):
ReadInformation.init()
while True:
shared_memory_guard.acquire()
for i in direcciones:
data=ReadInformation.Read(i)
information.append(data)
print("Read")
shared_memory_guard.release()
def save_sensor(datos):
while True:
shared_memory_guard.acquire()
print("save")
for j in datos:
SaveInformation.Savetxt(j)
del information[:]
shared_memory_guard.release()
direcciones = ScanAddress.address()
print('Creating threads')
t = threading.Thread(target=read_sensor, args=(direcciones,))
t2 = threading.Thread(target = save_sensor, args=(information,))
print('Executing read data thread')
t.start()
print('Executing file writer thread')
t2.start()
Espero que puedan ayudarme
Valora esta pregunta
0