그래서 트위터를 얻기 위해 GUI를 만들고 있습니다. 신호를 받고 텍스트 뷰를 변경하는 이벤트 상자를 만들었습니다. 멀티 프로세싱을 사용하여 텍스트 뷰를 변경했지만 변경되지 않았습니다. 창 크기를 변경하려고했습니다. 그러나 아무것도 바뀌지 않습니다. textview의 textbuffer를 가져올 수는 있지만 변경할 수는 없습니다.다른 프로세스에서 textview를 수정하는 방법은 무엇입니까?
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가 정지되어 타임 라인을 검색하는 데 시간이 오래 걸리는 경우가 있습니다. 그래서 저는 프로세스를 생성하고 타임 라인을 가져오고 트윗 버퍼를 설정할 것이라고 생각했습니다. 하지만 트위터 버퍼에 텍스트를 설정할 수 없습니다.
감사합니다. 그것은 나를 많이 돕고 있습니다. 한 번 멀티 스레딩을 시도했지만 아주 잘 작동하지 않았습니다. 그래서, 나는 mutliprocessing를 시도했다. 이제 멀티 스레딩을 할 것입니다. – Froyo
@Froyo : 내 대답을 수락하고/또는 최대 득표하겠습니까? : D –
고마워요! 지금은 잘 작동하고 있습니다! – Froyo