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を処理するために、メインループを実行する必要があります。

タイムアウトを使用する必要があります。

于 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 に答える