ich habe schon öfter folgendes Problem gehabt, muss es aber dieses mal endlich lösen . Wenn ich eine Schleife habe - etwa um eine Datei succzessiv aus dem Netz zu laden oder ähnliches - und versuche, während des Schleifendurchlaufes in meinem GTK Fenster ein Label zu aktualisieren, geschieht dieses in der Regel erst nach Beendigung der Schleife.
Selbst wenn ich mit queue_draw() und process_update() versuche eine Aktualisierung zu erzwingen, geschieht diese entweder nur sehr zögerlich oder auch erst am Ende der Schleife.
Was ich brauche ist eine Möglichkeit, zu einem bestimmten Zeitpunkt in einer rechenintensieven Schleife eine Aktualisierung des Fensters bzw. des entsprechenden Widgets zu erzwingen. Ganz doofes Beispiel: Bis 10000 zählen und dies in einer Progressbar anzeigen. Oder folgendes - sehr einfaches - Beispiel, das ich gerade mal schnell entworfen habe - hatte leider nur nano zur Hand, darum etwas knapp:
Code: Alles auswählen
#!/usr/bin/env python
import gtk
class MyWin(gtk.Window):
def __init__(self):
gtk.Window.__init__(self)
self.btn = gtk.Button("GO!!")
self.add(self.btn)
self.btn.connect("clicked", self.go)
self.show_all()
def go(self, widget):
counter = 0
while counter < 99999:
counter += 1
self.btn.set_label("Nummer %i" % counter)
self.btn.queue_draw()
self.btn.window.process_updates(True)
if __name__ == "__main__":
x = MyWin()
gtk.main()
Vielen Dank schonmal !