我想展示
中的所有产品itertools.product(string.punctuation, repeat=2))
从索引0到每个元素后0.5秒结束。不幸的是,tkinter没有正常的睡眠功能。我只能使用
w.after(time, callback)
但这对我想做的事情不利。
我想做这样的事情:
t=0
for i in k:
e1.delete(0,END)
e1.insert(0,u[t])
time.sleep(0.5)
t+=1
这是我的前3个产品的所有代码(我尝试过使用这个功能,但是显示所有产品需要太多功能)。任何人都知道我该怎么做才能让它发挥作用?
from tkinter import *
import itertools
import string
def d():
e1.delete(0,END)
e1.insert(0,u[1])
def y():
e1.delete(0,END)
e1.insert(0,u[2])
root = Tk()
l1 = Label(root, text="Current product:")
l1.pack(side = LEFT)
e1 = Entry(root)
e1.pack(side = RIGHT)
k = list(''.join(c) for c in itertools.product(string.punctuation, repeat=2))
e=" "
u = e.join(k)
u = u.split(e)
e1.insert(0,u[0])
e1.after(1000,d)
e1.after(2000,y)
root.mainloop()
答案 0 :(得分:2)
您可以通过after
传递参数:
def callback(product):
e1.delete(0,END)
e1.insert(0,product)
e1.after(1000,callback, u[1])
e1.after(2000,callback, u[2])
您也可以循环执行此操作:
for seconds, product in enumerate(k):
e1.after(seconds*1000, callback, product)