В PyGTK, как вы перерисовываете части окна, которые затемняются во время длинных вычислений? - PullRequest
0 голосов
/ 11 мая 2011

Ниже приведен элементарный код.

  • Отображает кнопку.
  • Нажатие кнопки запускает цикл.
  • В цикле, если вы неясны кнопка с окном, затемненная часть будет беловатой, а не перерисовывать до окончания цикла.

Как я могу сделать перерисовку кнопки в цикле?

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()

Ответы [ 2 ]

1 голос
/ 11 мая 2011

Вы можете запустить основную итерацию самостоятельно

while gtk.events_pending():
    gtk.main_iteration()
0 голосов
/ 11 мая 2011

Долгосрочное задание должно выполняться в потоке вне основного цикла. См. this для примера с pyGTK.

...