1

GTK如何在单击后设置菜单项不敏感,但在大约5秒后再次使其敏感。如果我做这样的事情,它不起作用(我不知道为什么不这样做)

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 秒钟,但按钮保持敏感。有没有办法做到这一点?

4

2 回答 2

3

你不能停止整个程序,GTK+ 需要运行它的主循环才能为 UI 服务。

您应该使用timeout

于 2013-01-04T13:13:20.943 回答
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
于 2013-01-04T14:51:06.080 回答