简体   繁体   English

无法弄清楚如何删除小部件,然后在 tkinter 中添加新小部件

[英]Can't figure out how to remove widgets and then add new ones in tkinter

So, I'm using tkinter for a program where the user must log in using entry fields and labels:因此,我将 tkinter 用于用户必须使用输入字段和标签登录的程序:

Code:代码:

import tkinter as tk

master = tk.Tk()


def all_children(window):
    _list = window.winfo_children()
    for item in _list:
        if item.winfo_children():
            _list.extend(item.winfo_children())
    return _list

def rules():
    clear()
    ruleLabel = tk.Label(master, textvariable="Test")
    ruleLabel.grid(row=0, column=0)
    master.update()

def clear():
    widget_list = all_children(master)
    for item in widget_list:
        item.grid_forget()
        master.update()
    master.update()

def login():
    tk.Label(master, text="Username").grid(row=0)
    tk.Label(master, text="Password").grid(row=1)

    global entry1
    entry1 = tk.Entry(master)
    global entry2
    entry2 = tk.Entry(master)

    entry1.grid(row=0, column=1)
    entry2.grid(row=1, column=1)

    tk.Button(master, text='Quit', command=master.quit).grid(row=3, column=0, sticky=tk.W, pady=4)
    tk.Button(master, text='Enter', command=lambda: rules()).grid(row=3, column=1, sticky=tk.W, pady=4)


login()
master.mainloop()

When I run it clears the first set of widgets correctly but then never adds the new label, am I doing something wrong?当我运行它时,它会正确清除第一组小部件,但随后从未添加新的 label,我做错了什么吗?

FYI I'm quite new to Tkinter so it may be obvious.仅供参考,我对 Tkinter 很陌生,所以这可能很明显。

Any help or suggestions is appreciated, thanks in advance.任何帮助或建议表示赞赏,在此先感谢。

The label is created but its content is empty. label 已创建,但其内容为空。

Change the below line inside rules() :rules()中更改以下行:

ruleLabel = tk.Label(master, textvariable="Test")

to

ruleLabel = tk.Label(master, text="Test")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM