まず、私はこのテーマでかなり長い時間を捜していると言えます。私はおそらく最も基本的なリソースを知っています。私はこの: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
絶対に、あなたのジェネレータの 'next'メソッド(' gobject.idle_add(myfakethread.next) ')を' gobject.idle_add() 'に渡してから、あなたのジェネレータで、完了すると、実行する偽のスレッドと 'Falseを返す '。 –
'gobject.idle_add()'に渡されたメソッドがTrueを返すと、GObjectによって再度実行されるようにスケジュールされます。 Falseを返すと、再度実行されません。したがって、 'yield True'への各呼び出しは、ある意味では、偽のスレッドからGObjectへの制御を放棄し、GObjectが次にダウンタイムを持つときに偽のスレッドが再開するポイントとして機能します。 –