【发布时间】:2016-01-23 16:43:55
【问题描述】:
我制作了一个正方形并让它移动,但当我退出时它会带来错误。我究竟做错了什么?谢谢
这是我的代码:
from tkinter import *
import time
root = Tk()
canvas = Canvas(root, height=500, width=500)
canvas.pack()
a = canvas.create_rectangle(10, 10, 50, 50)
for i in range(0, 60):
canvas.move(a,5,0)
root.update()
time.sleep(0.1)
root.mainloop()
这是我的错误:
Traceback (most recent call last):
File "C:\Users\Owner\Documents\Brad\Test.py", line 17, in <module>
canvas.move(a,5,0)
File "C:\Python34\lib\tkinter\__init__.py", line 2434, in move
self.tk.call((self._w, 'move') + args)
_tkinter.TclError: invalid command name ".57748176"
【问题讨论】:
-
使用
root.after而不是for循环和sleep -
你能解释一下吗,我是新手,不明白你的答案
-
这不是问题的答案。这只是对您的代码的建议。
mainloop启动程序并做很多事情 - 处理事件,在屏幕上重绘小部件等,使用循环和睡眠会停止mainloop工作。 -
谢谢!我在窗口移动时退出了窗口,所以它带来了错误,但是当我让循环完成然后退出时,没有错误。无论如何,你有什么办法可以防止这种情况发生?
-
@NoamNeumann:最简单的方法是使用 try 块并捕获被抛出的
TclError。