私のpythonスクリプトが開かれるとすぐに実行されるpygtkアプリケーションがあります。gtk.main() とともに、スクリプトの先頭で開始されるスレッドがあり、gtk.TextView() インスタンスを更新します。
def listen(self):
while True:
print "refreshing"
data = self.socket.recv(buffer_size)
if data:
self.txtBuffer.insert(self.txtBuffer.get_end_iter(), data + "\n")
print data
thread.start_new_thread(self.listen, ())
self.set_up_gui() # gtk.main()
ただし、プログラムを実行すると、GUI が開きますが、「更新」テキストは出力されず、ソケットに送信されたときにデータも出力されません。私は glib.add_idle() を使用してこのプログラムをスレッド化しようとしましたが、GUI がアイドル状態のとき (これはまれです) にのみ別のスレッドを実行します。ありがとうございました!