这是我的代码:
from tkinter import *
import time
master=Tk()
w=Canvas(master,width=500,height=500)
w.pack()
line=w.create_line
rect=w.create_rectangle
oval=w.create_oval
poly=w.create_polygon
rect(0,100,500,150,fill="#770077")
for x in range(0,51):
rect(0,100,x*10,150,fill="#007700")
w.after(100)
我尝试使用time.sleep()
函数,但这没有帮助,所以我尝试了tkinter的wait函数,但它也没有执行任何操作。这是针对一堂课的,但是该堂课的所有人也没有任何想法。
答案 0 :(得分:0)
创建函数,该函数使用x
绘制矩形,并使用after()
在x
较大的100ms之后再次运行自身。
import tkinter as tk
def draw_next_rect(x):
w.create_rectangle(0, 100, x*10, 150, fill="#007700")
x += 1
# stop animation with x==51
if x < 51:
master.after(100, draw_next_rect, x)
master = tk.Tk()
w = tk.Canvas(master, width=500, height=500)
w.pack()
w.create_rectangle(0, 100, 500, 150, fill="#770077")
# start animation with x=0
draw_next_rect(0)
master.mainloop()
编辑:类似于ttk.Progressbar
import tkinter as tk
import tkinter.ttk as ttk
def draw_next_rect():
progressbar.step()
if progressbar['value'] < 50:
master.after(100, draw_next_rect)
master = tk.Tk()
progressbar = ttk.Progressbar(master, maximum=50.001, mode='indeterminate')
progressbar.pack()
draw_next_rect()
maximum=
的大小必须比50
大一点,因为对于50
,它会在value == maximum
时删除小节
master.mainloop()