pythonのthreadingライブラリはforkとかしてるわけではないらしく,pygtk.mainに制御が移っている間はスレッドが実行されない.らしい.(http://blog.yakumo.la/blog/2009/03/25/pygtk%E3%81%A7%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E5%87%A6%E7%90%86%E3%80%82/)
実際に実行してみるとたしかにスレッドが実行されていなくて,イベントが起きて制御が戻ってきてる間だけスレッドが動く.
なので,http://d.hatena.ne.jp/kakurasan/20090225/p1 タイマーとかで我慢するのが一番良さそう.
pygtk内でthreadingを動かすサンプルコード
#!/usr/bin/env python import pygtk import gtk import time import threading class threadtest(threading.Thread): def __init__(self): threading.Thread.__init__(self) def run(self): while True : print '--thread--' time.sleep(0.1) class pygtktest: def __init__(self): self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.show() self.window.connect("event", self.callback) self.t = threadtest(self) self.t.setDaemon(True) self.t.start() def main(self): gtk.main() def callback(self, widget, event) : print "--event--" print __name__ if __name__ == "__main__": test = pygtktest() test.main()