我遇到了Tkinter canvas.coords()
方法的问题。我试图每1/60秒更新画布并尝试检测何时按下右箭头键。问题是,当我按住右箭头一段时间后,我收到一个错误:
http://postimage.org/image/bdfk3m8gx/
我的脚本是'novo.py',代码如下。也许有任何帮助?我只是一个乞丐。
import Tkinter, threading, time
def real_time(td, canvas):
while True:
time.sleep(1/60.0)
canvas.coords('line',1,1,200,200)
def func(event):
print 'key pressed'
root = Tkinter.Tk()
canvas = Tkinter.Canvas(root)
canvas.pack()
canvas.create_line(1,1,100,100, tag='line')
root.bind('<Right>', func)
thread = threading.Thread(target = real_time, args = (1/60.0, canvas))
thread.start()
root.mainloop()
答案 0 :(得分:0)
Tkinter不是线程安全的,并且通常不需要线程。
在您的情况下,您可以使用after
每隔N毫秒定期执行某些操作。例如,要运行大约每秒60次的东西,你会做这样的事情:
def real_time():
<do something here>
self.after(16, real_time)
然后,在程序启动时调用此函数一次:
real_time()