【问题标题】:Remove label text and set new label text on button click删除标签文本并在按钮单击时设置新标签文本
【发布时间】:2019-01-23 14:31:18
【问题描述】:

我制作了一个较小的程序来帮助对主程序进行故障排除。在这个程序中,我希望在显示新标签文本之前删除以前的标签文本。这很重要,因为如果您将旧标签文本留在标签中,文本最终会相互重叠。

from tkinter import *

root = Tk()

root.geometry("400x200")

def onButtonClick():
    while True:
        answerLabel = Label(root, text=wordEntry.get())
        answerLabel.grid(row=1, column=1)
        break


enterWordLabel = Label(root, text="Enter a word")
enterWordLabel.grid(row=0, column=0)

wordEntry = Entry(root)
wordEntry.grid(row=0, column=1)

enterButton = Button(root, text="Enter", command=onButtonClick)
enterButton.grid(row=0, column=2)

root.mainloop()

【问题讨论】:

  • 我已经好几年没用python了,怎么还有一个while语句?在我看来,当您在第一次运行时将其中断时,它不会做任何事情,因此有效地将循环取出。此外,您可能会在此找到答案:stackoverflow.com/a/17126015/2793683
  • “最终相互重叠”:您在每个 command=onButtonClick 上叠加了 Label。您必须先创建Label 一次.destroy() 前一个Label,然后再创建一个新的。

标签: python tkinter label


【解决方案1】:

每个小部件都有一个configure 方法,可让您更改其属性。您的代码中的问题是您创建新标签而不是更改现有标签的文本。

正确的解决方案是创建一次answerLabel,然后在你的脚本中调用configure方法:

...
answerLabel = Label(root, text="")
answerLabel.grid(row=1, column=1)
...

def onButtonClick():
    answerLabel.configure(text=wordEntry.get())

【讨论】:

    猜你喜欢
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 2020-08-15
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多