#pygtk
#pygtk
Вопрос:
Ниже приведен некоторый элементарный код.
- Отображается кнопка.
- Нажатие кнопки запускает цикл.
- В цикле, если вы закроете кнопку окном, затемненная часть будет беловатой и не будет перерисовываться до окончания цикла.
Как я могу перерисовать кнопку в цикле?
import gtk
class MyClass:
def __init__(self):
window = gtk.Window()
window.connect("destroy", gtk.main_quit)
window.set_size_request(200, 50)
table = gtk.Table()
# Add a button to the table.
button = gtk.Button("Button")
col = 0
row = 0
table.attach(button, col, col 1, row, row 1)
button.connect("clicked", self.clicked_event_handler)
window.add(table)
window.show_all()
def clicked_event_handler(self, button):
for i in range(10**8):
pass
if __name__ == "__main__":
MyClass()
gtk.main()
Ответ №1:
Вы могли бы запустить основную итерацию самостоятельно
while gtk.events_pending():
gtk.main_iteration()
Ответ №2:
Длительно выполняющаяся задача должна выполняться в потоке вне основного цикла. Смотрите это для примера с PyGTK.