tkinter,创建带有按钮和延迟的帧

时间:2018-11-23 12:07:32

标签: python tkinter frame

所以我试图用一个按钮创建多个帧,但是它们之间有延迟,所以我按下按钮->创建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()),但没有任何变化。...

1 个答案:

答案 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)
相关问题