Python在Canvas中使用time sleep方法
我想做的事情很简单,就是用代码逐渐画一条线,从一个点到另一个点。下面是我的代码:
from Tkinter import *
import time
mGui = Tk()
mGui.title('GUI Example')
mGui.geometry('1024x576+10+30')
#Canvas
canvas_1 = Canvas(mGui,height=500,width=500,bg='grey')
for i in range(1, 500):
time.sleep(0.5)
canvas_1.create_line(0,0,i,i)
canvas_1.update()
canvas_1.pack()
mGui.mainloop()
但是我的窗口在前面白白空着0.5*500秒(也就是250秒),然后才显示出画好的线。请问我哪里出错了呢?
1 个回答
1
你需要在开始循环之前,先调用一下 pack
方法来处理画布:
from Tkinter import *
import time
mGui = Tk()
mGui.title('GUI Example')
mGui.geometry('1024x576+10+30')
#Canvas
canvas_1 = Canvas(mGui,height=500,width=500,bg='grey')
#################
canvas_1.pack()
#################
for i in range(1, 500):
time.sleep(0.5)
canvas_1.create_line(0,0,i,i)
canvas_1.update()
mGui.mainloop()
否则,画布在循环结束之前是不会显示在窗口上的。