更新Tkinter标签后,如何删除出现故障的文本



我正在制作一个Tkinter应用程序,它可以在做某些事情后更改标签的文本,每当我更改标签的文字值,然后重新网格化它时,旧的文本仍然在后面。我尝试了label.grid_forget(),但没有解决它。以下是我迄今为止所拥有的东西:

from tkinter import *
root = Tk()
# Update text function
def update(txt):
global label
label = Label(root, text=txt)
label.grid(row = 1, columnspan = 2, padx=5, pady=5)
# Button 1
btn1 = Button(root, text="Button #1", command=lambda:update("You clicked button #1! My favorite."))
btn1.grid(row = 0, column = 0, padx=5, pady=5)
# Button 2
btn2 = Button(root, text="Button #2", command=lambda:update("You clicked button #2."))
btn2.grid(row = 0, column = 0, padx=5, pady=5)
# Label
label = Label(root, text="Click the buttons to change me.")
label.grid(row = 1, columnspan = 2, padx=5, pady=5)

该代码显示了两个按钮和一个文本标签,试图按照我所描述的方式进行操作。点击两个按钮后,其中一个仍然可以从后面看到,我不知道该怎么解决。任何帮助都将不胜感激。

这不是出现故障的文本,也许是文本覆盖,因为您在函数内创建了一个又一个的文本(正如JacksonPro所说(。因此,在函数外部创建标签,并在函数内部使用config进行更新,如:

label = Label(root)
def update(txt):
label.config(text=txt)
label.grid(row=1,columnspan=2,padx=5,pady=5)

现在您还可以删除global,因为在函数外部定义的变量可用于全局范围。还要注意,将缩进增加到习惯的4个空格,甚至2或1,甚至10也可以,但最好遵守惯例。

最新更新