+ -
当前位置:首页 → 问答吧 → Python的Tkinter的Canvas的使用问题

Python的Tkinter的Canvas的使用问题

时间:2011-01-02

来源:互联网

请问如何用Python的Tkinter的Canvas类实现一个圆圈每隔一秒移动一段距离?我用如下代码却只能看到最后一个圆圈,移动过程中圆圈不会显示,请问这是为什么?应当如何解决?

(因为现实问题,下面我用>>表示1个Tab)

import time
from Tkinter import *

class Flash:

>>def __init__(self, root):
>>>>self.root = root

>>def moveFunc(self, event):
>>>>canvas = Canvas(self.root, width = 320, height = 240)
>>>>canvas.pack()
>>>>circle = canvas.create_oval(0, 0, 30, 30, outline = '#000000', width = 1)
>>>>for i in range(5):
>>>>>>time.sleep(1)
>>>>>>canvas.move(circle, 40, 40)

root = Tk()
flash = Flash(root)

root.bind('<Button-1>', flash.moveFunc)

root.mainloop()

作者: hnkfliyao   发布时间: 2011-01-02

消息循环和工作同线程的话要尽速完工,忌讳用sleep会阻塞消息无法及时更新窗口。tk控件有个after方法类似计时器,用它来定时调用函数取代sleep的做法...

作者: angel_su   发布时间: 2011-01-02