2013-01-04 52 views
1

GTK如何在單擊後設置菜單項不敏感,但在大約5秒後再次變得敏感。 如果我做這樣的事情,這是行不通的(我不知道爲什麼不)我怎樣才能首先設置一個MenuItem敏感,然後再不敏感? Python GTK

self.shutdown_item.connect("activate",self.shutdown) 
self.shutdown_item.connect("activate",self.sensitiveshutdown) 


def sensitiveshutdown(self,widget): 
    shutdown_item.set_sensitive(False) 
    time.sleep(5) 
    shutdown_item.set_sensitive(True) 

不起作用。它將gui凍結5秒,但按鈕保持敏感。 有沒有辦法做到這一點?

回答

2

所以約作爲@unwind指出方式是超時(需要導入gobject

self.shutdown_item.connect("activate",self.shutdown) 
self.shutdown_item.connect("activate",self.sensitiveshutdown) 


def sensitiveshutdown(self, widget): 
    self.shutdown_item.set_sensitive(False) 
    gobject.timeout_add(5000, self.reviveShutDown) 

def reviveShutDown(self): 
    self.shutdown_item.set_sensitive(True) 
    return False 
+0

感謝這正是我一直在尋找 – wa4557

+1

更妙的是增加一個'回報(假')到'reviveShutDown(self)'取消'add_timeout' – wa4557

+0

@ user1943296忘了在急忙...謝謝 – deinonychusaur

3

您無法停止整個程序,GTK +需要運行其主循環以便爲UI提供服務。您可以使用timeout