Gtk zeichnet erst nach Funktionsbearbeitung
Verfasst: Donnerstag 20. Februar 2014, 21:03
Ich will in einer Handlerfunktion das Aussehen eines Widgets verändern (im Beispiel ein Radiobutton). Wie es scheint, wartet Gtk mit der Darstellung der Veränderung, bis die Funktion abgearbeitet ist, sie soll jedoch unmittelbar dargestellt werden. (Das Beispiel hat wenig Sinn, ist nur zur Illustration)
Zu Beginn der Funktion on_button_toggled() wird der zweite, nicht aktive Radiobutton aktiv gesetzt und anschließend 2 Sekunden gewartet. Angezeigt wird die Veränderung allerdings erst NACH den 2 Sekunden. Hat jemand ne Idee, wie man Gtk dazu bringen kann, die Änderung sofort umzusetzen?
Code: Alles auswählen
from gi.repository import Gtk
import time
class ToggleButtonWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="ToggleButton Demo")
self.set_border_width(10)
hbox = Gtk.Box(spacing=6)
self.add(hbox)
self.button1 = Gtk.RadioButton.new_with_label_from_widget(None, "Button 1")
self.button1.connect("toggled", self.on_button_toggled)
hbox.pack_start(self.button1, False, False, 0)
self.button2 = Gtk.RadioButton.new_from_widget(self.button1)
self.button2.set_label("Button 2")
self.button2.connect("toggled", self.on_button_toggled)
hbox.pack_start(self.button2, False, False, 0)
def on_button_toggled(self, button):
self.button2.set_active(True)
time.sleep(2.0)
win = ToggleButtonWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()