所以我试图用一个按钮创建多个帧,但是它们之间有延迟,所以我按下按钮->创建frame1->等待5秒钟->创建frame2,依此类推。但是问题是,当我按下按钮时,它需要5秒钟并同时显示框架。希望有人知道如何解决这个问题。
import tkinter as tk
import time
class lingo(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.grid_rowconfigure(0,minsize=1080)
self.grid_columnconfigure(0,minsize=1810)
m = tk.Frame(self)
m.grid(row=0, column=0,sticky="nsew")
h1 = tk.Frame(m)
h1.grid(row=0, column=0)
e1 = tk.Entry(h1)
e1.grid(row=0, column=0)
def get_entry():
entry1 = e1.get()
print(entry1)
print(list(entry1))
def test1():
r1l1t = tk.Label(r1l1, text=a1, font=("",40), fg="white")
r1l1t.grid()
r1l1t['bg'] = r1l1['bg']
r1l2t = tk.Label(r1l2, text=a2, font=("",40), fg="white")
r1l2t.grid()
r1l2t['bg'] = r1l2['bg']
if len(entry1) < 19:
print("te kort woord")
if len(entry1) > 19:
print("te lang woord")
if len(entry1) == 19:
a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19 = list(entry1)
test1()
m.grid_rowconfigure(0, minsize=100)
m.grid_rowconfigure(1, minsize=100)
m.grid_columnconfigure(0, minsize=1810)
b1 = tk.Button(h1, bg="blue", text="enter", command=get_entry)
b1.grid(row=0, column=1)
row1 = tk.Frame(m, bg="grey")
row1.grid(row=1, column=0, sticky="nsew")
for c in range(0, 38):
if c % 2 == 0:
row1.grid_columnconfigure(c, minsize=5)
else:
row1.grid_columnconfigure(c, minsize=90)
row1.grid_rowconfigure(0, minsize=5)
row1.grid_rowconfigure(1, minsize=90)
row1.grid_rowconfigure(2, minsize=5)
r1l1 = tk.Frame(row1, bg="blue")
r1l1.grid(row=1, column=1, sticky="nsew")
r1l1.grid_rowconfigure(0, minsize=90)
r1l1.grid_columnconfigure(0, minsize=90)
# r1l1t = tk.Label(r1l1, text=".....", font=("",40), fg="white")
# r1l1t.grid()
# r1l1t['bg'] = r1l1['bg']
r1l2 = tk.Frame(row1, bg="blue")
r1l2.grid(row=1, column=3, sticky="nsew")
r1l2.grid_rowconfigure(0, minsize=90)
r1l2.grid_columnconfigure(0, minsize=90)
# r1l2t = tk.Label(r1l2, text=".....", font=("",40), fg="white")
# r1l2t.grid()
# r1l2t['bg'] = r1l2['bg']
r1l3 = tk.Frame(row1, bg="blue")
r1l3.grid(row=1, column=5, sticky="nsew")
r1l3.grid_rowconfigure(0, minsize=90)
r1l3.grid_columnconfigure(0, minsize=90)
r1l3t = tk.Label(r1l3, text=".....", font=("",40), fg="white")
r1l3t.grid()
r1l3t['bg'] = r1l3['bg']
r1l4 = tk.Frame(row1, bg="blue")
r1l4.grid(row=1, column=7, sticky="nsew")
r1l4.grid_rowconfigure(0, minsize=90)
r1l4.grid_columnconfigure(0, minsize=90)
r1l4t = tk.Label(r1l4, text=".....", font=("",40), fg="white")
r1l4t.grid()
r1l4t['bg'] = r1l4['bg']
r1l5 = tk.Frame(row1, bg="blue")
r1l5.grid(row=1, column=9, sticky="nsew")
r1l5.grid_rowconfigure(0, minsize=90)
r1l5.grid_columnconfigure(0, minsize=90)
r1l5t = tk.Label(r1l5, text=".....", font=("",40), fg="white")
r1l5t.grid()
r1l5t['bg'] = r1l5['bg']
r1l6 = tk.Frame(row1, bg="blue")
r1l6.grid(row=1, column=11, sticky="nsew")
r1l6.grid_rowconfigure(0, minsize=90)
r1l6.grid_columnconfigure(0, minsize=90)
r1l6t = tk.Label(r1l6, text=".....", font=("",40), fg="white")
r1l6t.grid()
r1l6t['bg'] = r1l6['bg']
r1l7 = tk.Frame(row1, bg="blue")
r1l7.grid(row=1, column=13, sticky="nsew")
r1l7.grid_rowconfigure(0, minsize=90)
r1l7.grid_columnconfigure(0, minsize=90)
r1l7t = tk.Label(r1l7, text=".....", font=("",40), fg="white")
r1l7t.grid()
r1l7t['bg'] = r1l7['bg']
r1l8 = tk.Frame(row1, bg="blue")
r1l8.grid(row=1, column=15, sticky="nsew")
r1l8.grid_rowconfigure(0, minsize=90)
r1l8.grid_columnconfigure(0, minsize=90)
r1l8t = tk.Label(r1l8, text=".....", font=("",40), fg="white")
r1l8t.grid()
r1l8t['bg'] = r1l8['bg']
r1l9 = tk.Frame(row1, bg="blue")
r1l9.grid(row=1, column=17, sticky="nsew")
r1l9.grid_rowconfigure(0, minsize=90)
r1l9.grid_columnconfigure(0, minsize=90)
r1l9t = tk.Label(r1l9, text=".....", font=("",40), fg="white")
r1l9t.grid()
r1l9t['bg'] = r1l9['bg']
r1l10 = tk.Frame(row1, bg="blue")
r1l10.grid(row=1, column=19, sticky="nsew")
r1l10.grid_rowconfigure(0, minsize=90)
r1l10.grid_columnconfigure(0, minsize=90)
r1l10t = tk.Label(r1l10, text=".....", font=("",40), fg="white")
r1l10t.grid()
r1l10t['bg'] = r1l10['bg']
r1l11 = tk.Frame(row1, bg="blue")
r1l11.grid(row=1, column=21, sticky="nsew")
r1l11.grid_rowconfigure(0, minsize=90)
r1l11.grid_columnconfigure(0, minsize=90)
r1l11t = tk.Label(r1l11, text=".....", font=("",40), fg="white")
r1l11t.grid()
r1l11t['bg'] = r1l11['bg']
r1l12 = tk.Frame(row1, bg="blue")
r1l12.grid(row=1, column=23, sticky="nsew")
r1l12.grid_rowconfigure(0, minsize=90)
r1l12.grid_columnconfigure(0, minsize=90)
r1l12t = tk.Label(r1l12, text=".....", font=("",40), fg="white")
r1l12t.grid()
r1l12t['bg'] = r1l12['bg']
r1l13 = tk.Frame(row1, bg="blue")
r1l13.grid(row=1, column=25, sticky="nsew")
r1l13.grid_rowconfigure(0, minsize=90)
r1l13.grid_columnconfigure(0, minsize=90)
r1l13t = tk.Label(r1l13, text=".....", font=("",40), fg="white")
r1l13t.grid()
r1l13t['bg'] = r1l13['bg']
r1l14 = tk.Frame(row1, bg="blue")
r1l14.grid(row=1, column=27, sticky="nsew")
r1l14.grid_rowconfigure(0, minsize=90)
r1l14.grid_columnconfigure(0, minsize=90)
r1l14t = tk.Label(r1l14, text=".....", font=("",40), fg="white")
r1l14t.grid()
r1l14t['bg'] = r1l14['bg']
r1l15 = tk.Frame(row1, bg="blue")
r1l15.grid(row=1, column=29, sticky="nsew")
r1l15.grid_rowconfigure(0, minsize=90)
r1l15.grid_columnconfigure(0, minsize=90)
r1l15t = tk.Label(r1l15, text=".....", font=("",40), fg="white")
r1l15t.grid()
r1l15t['bg'] = r1l15['bg']
r1l16 = tk.Frame(row1, bg="blue")
r1l16.grid(row=1, column=31, sticky="nsew")
r1l16.grid_rowconfigure(0, minsize=90)
r1l16.grid_columnconfigure(0, minsize=90)
r1l16t = tk.Label(r1l16, text=".....", font=("",40), fg="white")
r1l16t.grid()
r1l16t['bg'] = r1l16['bg']
r1l17 = tk.Frame(row1, bg="blue")
r1l17.grid(row=1, column=33, sticky="nsew")
r1l17.grid_rowconfigure(0, minsize=90)
r1l17.grid_columnconfigure(0, minsize=90)
r1l17t = tk.Label(r1l17, text=".....", font=("",40), fg="white")
r1l17t.grid()
r1l17t['bg'] = r1l17['bg']
r1l18 = tk.Frame(row1, bg="blue")
r1l18.grid(row=1, column=35, sticky="nsew")
r1l18.grid_rowconfigure(0, minsize=90)
r1l18.grid_columnconfigure(0, minsize=90)
r1l18t = tk.Label(r1l18, text=".....", font=("",40), fg="white")
r1l18t.grid()
r1l18t['bg'] = r1l18['bg']
r1l19 = tk.Frame(row1, bg="blue")
r1l19.grid(row=1, column=37, sticky="nsew")
r1l19.grid_rowconfigure(0, minsize=90)
r1l19.grid_columnconfigure(0, minsize=90)
r1l19t = tk.Label(r1l19, text=".....", font=("",40), fg="white")
r1l19t.grid()
r1l19t['bg'] = r1l19['bg']
app = lingo()
app.wm_geometry("1810x1080")
app.resizable(False, False)
app.title("pls work")
app.mainloop()
所以这次我添加了整个代码,并尝试将r1l2t.grid()替换为r1l2t.after(1000,r1l2t.grid()),但没有任何变化。...
答案 0 :(得分:0)
启动Tkinter的主循环后,GUI将等待事件(击键,鼠标单击等),并在发生事件时立即做出反应(单击按钮上的视觉效果,...)。但是,当您使用this line chart
this bar chart
a line chart
a line chart
this line chart
a line chart
line chart will show area in 3d
line chart
area chart
line chart
this bar chart
this line chart is useful
twl chart
时,将冻结此主循环,因此GUI在事件发生时不会做出反应,而是在5秒结束后全部处理它们。此外,GUI在冻结之前不会更新,因此您的第一帧仅显示在末尾。您可以使用time.sleep(5)
方法强制GUI更新。
Tkinter提供了一种在不冻结主循环的情况下延迟执行命令的方法:update_idletasks()
将在给定延迟(以毫秒为单位)之后执行app.after(delay , function, *args)
。您犯的错误是您呼叫function(*args)
而不是r1l2t.after(1000, r1l2t.grid())
。下面是一个小示例,在按钮按下时创建两个标签,每个标签之间的延迟时间为5s。
r1l2t.after(1000, r1l2t.grid)