Hallo! Wenn man bei folgendem Skript auf den 'Los geht’s!'-Button klickt, vergeht erst eine Sekunde (time.sleep(1)), bevor das GUI aktualisiert wird, also erst nach dem Durchlauf der Schleife. Wie kann ich erreichen, dass das bereits zu Beginn der Schleife geschieht? Vielen Dank!
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: utf-8 -*-
from gi.repository import Gtk, GObject
import time
class MainWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self)
self.set_position(Gtk.WindowPosition.CENTER)
self.grid01 = Gtk.Grid()
self.add(self.grid01)
self.label01 = Gtk.Label("-")
self.grid01.attach(self.label01, 0, 0, 1, 1)
self.button01 = Gtk.Button(label="Los geht’s!")
self.button01.connect('clicked', self.on_button01_clicked)
self.grid01.attach(self.button01, 0, 1, 1, 1)
self.show_all()
def on_button01_clicked(self, widget):
task = self.loop(widget)
GObject.idle_add(task.__next__)
def loop(self, widget):
for i in range(0, 11):
self.label01.set_text(str(i))
time.sleep(1)
yield True
self.label01.set_text("-")
yield False
win = MainWindow()
win.connect("delete-event", Gtk.main_quit)
Gtk.main()