2011-05-11 19 views
0

以下是一些基本代碼。在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() 

回答

0

長時間運行的任務應該在一個線程主循環之外執行。有關pyGTK的示例,請參閱this

1

您可以運行主迭代自己

while gtk.events_pending(): 
    gtk.main_iteration() 
相關問題