您不能只使用time.sleep(1) 来查看更新,您必须更新主窗口。而且您每 1 秒创建 5 个 Text 小部件,一个就足够了。只需在循环之外添加一个并更新它。
类似的东西..
from tkinter import*
import random, time
wn=Tk()
wn.geometry("300x300")
mytext=Text(wn,bg="pink",width=30,height=200)
mytext.pack()
for i in range(5):
loto = random.sample( range(1,30),6)
mytext.insert('end', str(loto) + '\n')
wn.update()
time.sleep(1)
wn.mainloop()
虽然,这不是在 tkinter 中循环某些东西的推荐方式,但对于小循环和这些目的,它可以使用。如果你打算循环一些大的东西,比如在 tkinter 中更新大量的文本、小部件和图像,那么使用 after() 函数(How to use after()?)。简而言之,after 在每个给定的时间间隔内调用该函数,因此通过将其放入一个函数中,它会一直调用相同的函数直到您停止它,可以通过不同的方式停止 see this post on how to stop after。
使用after():
from tkinter import*
import random, time
wn=Tk()
wn.geometry("300x300")
mytext=Text(wn,bg="pink",width=30,height=200)
mytext.pack()
def update(c=0):
if c < 5: # Runs 5 times
loto = random.sample( range(1,30),6)
mytext.insert('end', str(loto) + '\n')
wn.after(1000, update, c+1) # after( ms, func, args )
update() # Called the function once
wn.mainloop()