2011-01-16 9 views
1

hereで説明したように、PyGTKを使用した簡単なトレイアイコンがあります。PyGTKトレイアイコンを非同期的に更新する

GTKの新機能であるため、gtk.main()は同期しているため、それぞれのUIが閉じられるまでそれ以上の処理はブロックされているようです。

どうすれば定期的に(たとえば5秒ごとに)更新/更新することができますか?StatusIconのアイコン - Twisted et alに頼らなければなりませんか?このため?

答えて

4

gobject.timeout_add()を使用して定期的なタスクを追加できます。最初のパラメータは秒単位の間隔です.2番目のパラメータは呼び出すコールバックです。コールバックは、boolとして使用された場合、Trueと評価されるものを返す限り呼び出されます。

PyGTK FAQのセクション20、特にquestion 20.7も参照してください。

+0

これはまさに私が必要なものです - ありがとう! – AnC

0

トレイのアイコンを簡単にリフレッシュすることはできません。既に試していて失敗したトレイアイコンから取り除くことはできません。実際には「」という理由でドロップします。説明が難しい場合は、 。「)、ここで

しかし、私はあなたがdocから、gtk.status_icon_new_from_gicon()方法を使用してステータスアイコンを設定する必要がありますステータスアイコンをリフレッシュするために、これまで持っているものです。

表示するステータスアイコンを作成します。 a gio.Icon()。アイコンがテーマの アイコンの場合は、 テーマが変更されたときに更新されます。

あなたはステータスアイコンをリフレッシュしたいのであれば、あなたはgio themed iconを使用してアイコンを作成する必要があります、そして今、あなたはあなたをテーマにしたアイコンと、この変更は、トレイのステータスに直接表示されます直接更新することができます。あなたの質問について今

はいgtk.main()あなただけのアクションに信号をバインドする必要があり、この信号がトリガされたときにアクションがあなたのケースのために、実行することができるので、信号待ちをブロックアクションコールバックにステータスコードを更新するコードを記述することができます。

私はここでお手伝いしました。

+0

ありがとうございますが、 'self.statusIcon.set_from_stock(gtk.STOCK_JUSTIFY_FILL)'を使った(上記のような)単純なタイムアウトハンドラがうまく動作しました。私は、GTKをより深く掘り下げていくにつれて、あらゆる問題に取り組めると確信しています。物事がどのようにフィットしているかをよりよく理解すると、おそらくこれに戻ります。 – AnC

+0

@AnC:いつでも助けてくれるのはうれしいでしょう。私以外の結論に終わったら、幸運にも幸運になります。私の答えは私が周期性のことを読んでいないからです。私はあなたが "ステータスアイコンをリフレッシュ"したいという事実にとても敏感で、私はその答えが何かを忘れていました:)そのことについて申し訳ありません – mouad

関連する問題