3
首先,我必須說我已經在這個主題上搜索了很長時間,並且我可能知道大部分基本資源。我試圖使用這個:https://github.com/woodenbrick/gtkPopupNotify來添加一個通知系統到以前所有的命令行程序。可悲的是,這通常會掛起,因爲我執行了大量的睡眠操作等等。如果我能夠獲得線程系統,我會認爲它會工作。從本質上講,我只想做一個不會干擾包括其他PyGTK組件在內的任何其他程序操作的通知。功能,使這些通知在此刻正在尋找這樣對我來說:PyGTK的線程編程
def showMessage(title, message):
notifier1 = gtkPopupNotify.NotificationStack(timeout=4)
notifier1.bg_color = gtk.gdk.Color("black")
notifier1.fg_color = gtk.gdk.Color("white")
notifier1.edge_offset_x = 5-27 #-27 for odd bugginess
notifier1.edge_offset_y = 5
notifier1.new_popup(title=title, message=message)
任何幫助將不勝感激,因爲我真的變得厭倦了這個問題。
是否可以在程序過程中使用'gobject.idle_add()'?它並非如此。有其他選擇嗎?我目前正在使用全局變量更改的可怕方法,並且在運行另一個循環時執行一個無止境的'gobject.timeout_add()'方法來執行通知系統。 – Paul
當然,但是一定要通過'gobject.idle_add()'你的生成器的'next'方法(即'gobject.idle_add(myfakethread.next)'),然後在你的生成器中,只要你想要'yield True'假線程運行並在完成時產生「假」。 – 2011-12-07 17:02:54
當傳遞給'gobject.idle_add()'的方法返回True時,它計劃再次由GObject運行。當它返回False時,它不會再執行。因此,每次調用'yield True',從某種意義上說,將控制權從假線程放棄到GObject,並且充當下一次GObject停機時假線程將恢復的點。 – 2011-12-07 17:06:54