yendo weblog


PyGTK でのバックグラウンド動作

GUI アプリ動作時にウェブにアクセスすると、その間 GUI が固まってしまう。 これを回避するにはウェブへのアクセスをバッググラウンドで行なう必要がある。 Gtk2-Perl の場合については以前書いたけど、 PyGTK なら Twisted を使えばとっても簡単。 これくらいなら、フォークとかスレッドとか細かな面倒を見なくて済む。

まずは必要なモジュールをインポート。 他のモジュールに先行してインポートした方がいいらしい。

from twisted.internet import gtk2reactor
gtk2reactor.install()
from twisted.internet import defer, reactor
from twisted.web import client
ウェブへのアクセスには getPage を使う。addCallback でアクセス終了後に呼び出す関数を指定する。 downloadPage では、ファイルへのダウンロードを行う。
d = client.getPage(url)
d.addCallback(func_cb)

def func_cb(data):
    print data

メイン・ループについては、gtk.main() の代わりに reactor.run() で開始、 また終了についても、gtk.main_quit() の代わりに、reactor.stop() を使う。

reactor.run()

なお、プロキシーを利用する場合はちょっと面倒みたい。 簡単な方法はないのかな。

追記: 結局プロキシーを利用する適当なモジュールを自分で用意した。(2009/05/19)

2009/04/18 (Sat) 15:14 | タグ: computer


同じカテゴリの最新記事

  1. GNOME 写真フレーム
  2. gnome-terminal の文字幅問題
  3. F-Spot の日本語メッセージカタログ
  4. Gtk2-Perl でのバックグラウンド動作
  5. Twitim: Twitter 専用 XMPP クライアント