ich habe zurzeit ein kleines Problem beim Entwickeln einer GUI.
Sie soll nicht einfrieren, weshalb ich einen extra Thread erstellt habe. Dieser ist in einer eigenen Klassen und soll per EventHandling mit anderen Klassen kommunizieren können
Code: Alles auswählen
class myThread(multiprocessing.Process)
def connect(self, event_name, callback):
if self.callbacks is None:
self.callbacks = {}
if event_name not in self.callbacks:
self.callbacks[event_name] = [callback]
else:
self.callbacks[event_name].append(callback)
def fire(self, event_name, data=None):
if self.callbacks is not None and data in self.callbacks:
for callback in self.callbacks[data]:
callback(self)
def run(self):
self.fire(self, "go")
Die Thread Klasse rufe ich aus dem der Klasse "dimm_gui" auf und binde das Ereignis "go" an die Funktion do_change_pbar => dort soll meine GTK ProgressBar mit einem neuen Wert aus einer Variable gefüllt werden (öffentliche Variable per sharedctypes):
Code: Alles auswählen
myt = myThread()
myt.connect("go", self.do_change_pbar)
myt.start()
def do_change_pbar(self, data):
self.pbar.set_value(int(self.s.value))
Das Update der Progressbar funktioniert nicht, warum kann ich mir nicht erklären, denn die Variable ist korrekt gefüllt und das "set_value" wird sauber ausgeführt. Aber die Oberfläche wird nicht entsprechend gäendert...
Kann sich das jemand erklären und kann mir einen Tipp geben?
Vielen Dank!