Python在Canvas中使用time sleep方法

2 投票
1 回答
2342 浏览
提问于 2025-04-18 06:06

我想做的事情很简单,就是用代码逐渐画一条线,从一个点到另一个点。下面是我的代码:

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()

否则,画布在循环结束之前是不会显示在窗口上的。

撰写回答