ich suche nach einer Möglichkeit, das 'self.labelData' sich mit den gesendeten Daten vom Thread
trigger selbst aktualisiert.
Wenn ich meine Funktion 'updateLabelDisplay' (Zeile 13) dauerhaft laufen lasse, hängt das Programm natürlich an der Stelle.
Was wäre der sinnvollste Weg? Einen weiteren Thread? Verwenden von Kontrollvariablen?
Ich müsste neben dem Anzeigen auf dem GUI die Werte auch noch weiter verarbeiten können.
Wenn das Thema schon mal war, bitte kurz ein Hinweis oder Link, ich konnte nichts passendes finden.
Vielen Dank
Code: Alles auswählen
from threading import Thread
from queue import Queue, Empty
from tkinter import Tk, Frame, Label
from time import sleep
class mainWindow(Frame):
def __init__(self, q, master=None):
super(mainWindow, self).__init__(master)
self.pack()
self.q = q
self.labelData = Label(self, text="----")
self.labelData.pack()
self.updateLabelDisplay()
def updateLabelDisplay(self):
try:
self.message = self.q.get()
except:
pass
## print(self.message)
self.labelData["text"] = self.message
class Trigger():
def __init__(self, q):
self.q = q
for self.a in [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]:
self.q.put(self.a)
sleep(2)
if __name__ == "__main__":
q = Queue()
trigger = Thread(target=Trigger, args=(q,))
trigger.start()
## Starte Fenster ----------------------------------------------------
root = Tk()
fenster = mainWindow(q, master=root)
fenster.mainloop()
## Ende Start Fenster