所以我正在制作一个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 2012-02-14 09:17:16
@Froyo:这是否意味着您要接受和/或上调我的回答? :D – 2012-02-14 09:27:01
非常感谢!它现在运作良好! – Froyo 2012-02-14 09:49:49