Warten bis GTK-Fenster aktualisiert ist

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
pete123
User
Beiträge: 7
Registriert: Sonntag 13. Mai 2007, 16:49
Kontaktdaten:

Montag 14. Mai 2007, 17:51

Hi,

ich bastel hier gerade ein kleines GTK Programm zum Testen von Algorithmen.
(ja ich weiß, keine Hausaufgaben-Besprechung hier :) und ich habe lediglich folgendes Problem:

Wenn ich zwischen zwei sehr rechenintensiven Aufgaben - z.B. Sortieren von langen listen mit meinen ineffizienten Algorithmen - einem GtkLabel mit set_text() einen neuen Text zuweise kommt die GUI nicht mit dem Neuzeichnen nach.
D.h. bevor der Text erscheint, springt Python bereits in die nächste Aufgabe und der Text erscheint, erst wenn Python das Sortieren der 2. Liste komplett fertig hat.


Meine Frage ist also, gibt es irgendeine Möglichkeit darauf zu warten, dass Python die GUI aktualisiert? Oder eine Möglichkeit Python dazu zu bringen explizit die GUI neuzuzeichnen ?

Ich habe es zwar schon mit sleep() versucht, aber das legt die GUI genauso lahm wie mein Algorithmus :)
Threads wären zwar eine Option, aber vielleicht gehts ja auch irgendwie so.

Danke!
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 14. Mai 2007, 18:43

Sieh dir mal ``gobject.idle_add()`` und die dazugehörigen Diskussionen im Forum hier an.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
pete123
User
Beiträge: 7
Registriert: Sonntag 13. Mai 2007, 16:49
Kontaktdaten:

Sonntag 20. Mai 2007, 19:29

Hi,

danke für den Tipp, als Gtk-Neuling weiß man eben oft nicht an welcher Stelle man da suchen muss :)

Mit deinem Tipp bin ich auf folgendes Konstrukt gestoßen, welches ich nun erfolgreich einsetze:

Code: Alles auswählen

while gtk.events_pending():
    gtk.main_iteration()

Danke!
(Problem gelöst)
Antworten