私はつぶやきを得るためのGUIを作っています。私は信号を受け取り、テキストビューを変更するイベントボックスを作った。 マルチ処理を使用してテキストビューを変更していますが、変更されません。私は窓の大きさを変えようと試みました。しかし何も変わりません。私はtextviewのtextbufferを得ることができますが、それを変更することはできません。別のプロセスからテキストビューを変更するにはどうすればよいですか?
import pygtk
pygtk.require('2.0')
import gtk
from multiprocessing import Process
class multi:
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_size_request(800,400)
self.window.set_title("Twitter Box")
self.window.set_border_width(4)
self.window.connect("destroy", self.close_application)
self.vbox1 = gtk.EventBox()
self.vbox1.set_size_request(750,450)
self.vbox1.connect('leave_notify_event',self.go_multi)
self.window.add(self.vbox1)
self.vbox1.show()
self.tweetview = gtk.TextView()
self.tweetbuffer = self.tweetview.get_buffer()
self.tweetbuffer.set_text('Why not working?')
self.vbox1.add(self.tweetview)
self.tweetview.show()
self.window.show()
def close_application(self, widget):
gtk.main_quit()
def go_multi(self, widget, data=None):
p = Process(target = self.change_textview)
p.start()
p.join()
def change_textview(self):
print 'changing text'
startiter = self.tweetbuffer.get_start_iter()
enditer = self.tweetbuffer.get_end_iter()
text = self.tweetbuffer.get_text(startiter, enditer)
print text
if text:
self.tweetbuffer.set_text('Changed....')
else:
self.tweetbuffer.set_text('')
return
def main():
multi()
gtk.main()
if __name__ == '__main__':
main()
私はつぶやきを得るためにGUIを作っています。接続が遅いためタイムラインを取得するのに時間がかかり、GUIがフリーズすることがあります。だから、私はそれがプロセスを作り、タイムラインを取得してtweetbufferを設定するようにしたかったのです。しかし、私はtweetbufferにテキストを設定することができません。
ありがとう!それは私をたくさん助けています。私はかつてマルチスレッドを試みましたが、うまく動作しませんでした。だから、私はmutliprocessingを試みました。 は今、私は – Froyo
@Froyoをマルチスレッド化のためのつもりです:これはあなたがおよび/または私の答えを、投票まで受け入れるつもりだという意味でしょうか? :D –
どうもありがとう!今はうまくいっています! – Froyo