更新 Tkinter 标签后如何删除故障文本?

时间:2021-03-20 12:35:56

标签: python 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)

代码显示了两个按钮和一个文本标签,试图按照我的描述进行操作。单击两个按钮后,从后面仍然可以看到其中一个按钮,我不知道如何解决这个问题。任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

这不是故障文本,也许是文本覆盖,因为您在函数内部创建了一个重叠的文本(如 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 也可以,但最好遵守约定。

相关问题