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

时间:2021-01-10 13:01:23

标签: python tkinter widget label

因此,我将 tkinter 用于用户必须使用输入字段和标签登录的程序:

代码:

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()

当我运行它时,它会正确清除第一组小部件,但从未添加新标签,我做错了什么吗?

仅供参考,我对 Tkinter 很陌生,所以这可能很明显。

感谢任何帮助或建议,提前致谢。

1 个答案:

答案 0 :(得分:1)

标签已创建,但其内容为空。

更改 rules() 中的以下行:

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

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