
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