Glade로 만든 인터페이스가 있습니다. 그것은 DrawingArea와 버튼을 포함합니다.PyGTK에서 DrawingArea를 새로 고침하는 방법은 무엇입니까?
내 Canva를 X 번 새로 고치는 쓰레드를 만들려고했습니다. 몇 초 후, 나는 얻을 오류 메시지처럼 : 나는 이러한 오류를 수정할 수있는 방법
import pygtk
pygtk.require("2.0")
import gtk
import Canvas
import threading as T
import time
import Map
gtk.gdk.threads_init()
class Interface(object):
class ThreadCanvas(T.Thread):
"""Thread to display the map"""
def __init__(self, interface):
T.Thread.__init__(self)
self.interface = interface
self.started = True
self.start()
def run(self):
while self.started:
time.sleep(2)
self.interface.on_canvas_expose_event()
def stop(self):
self.started = False
def __init__(self):
self.interface = gtk.Builder()
self.interface.add_from_file("interface.glade")
#Map
self.map = Map.Map(2,2)
#Canva
self.canvas = Canvas.MyCanvas(self.interface.get_object("canvas"),self.game)
self.interface.connect_signals(self)
#Thread Canvas
self.render = self.ThreadCanvas(self)
def on_btnChange_clicked(self, widget):
#Change map
self.map.change()
def on_interface_destroy(self, widget):
self.render.stop()
self.render.join()
self.render._Thread__stop()
gtk.main_quit()
def on_canvas_expose_event(self):
st = time.time()
self.canvas.update(self.map)
et = time.time()
print "Canvas refresh in : %f times" %(et-st)
def main(self):
gtk.main()
:
이"X 윈도우 서버 0.0", "치명적인 오류 IO 11"여기
내 코드입니다 ?
감사합니다. 작동합니다. Thread.Lock() 및 Thread.RLock()을 사용하여 모든 액세스를 처리하려고했습니다. 나는 당신의 의견을 메모합니다. – Lialon