【问题标题】:How to over-write a label如何覆盖标签
【发布时间】:2014-11-15 20:33:33
【问题描述】:

我正在尝试编写最简单的 tkinter 窗口,它将显示一个输入框和一个按钮以及输入框中输入的任何数字的正方形。

我编写的代码有点工作,除了每个新答案都覆盖在前一个答案上,所以如果你有一个长数字后跟一个小数字,你可以在新答案下面看到旧答案的剩余部分一个。

我该如何解决这个问题?有没有办法取消之前的标签?

from tkinter import *

x=Tk()
x.geometry('900x400')
e=Entry(x)
e.place(relx=0.4, rely=0.2)

def z():
    aa=e.get()
    aa=int(aa)
    aa=aa**2
    l=Label(x, text=aa).place(relx=0.4, rely=0.4)
    e.delete(0, END)

b=Button(x, text='PRESS', command=z).place(relx=0.6, rely=0.2)
x.mainloop()

【问题讨论】:

  • 更改标签的文本,而不是创建新的。

标签: python tkinter label


【解决方案1】:

不要创建 mpnew 标签。创建一次标签,然后使用configure 方法更改文本。

global l
l = Label(...)
l.pack(...)
...
l.configure(text="some string")

作为建议:学习 tkinter 时,请忽略 place。它远不如pack 和grid 有用。

注意:您必须创建标签,然后在单独的行上调用 pack/place/grid,因为 pack/place/grid 总是返回 None。

【讨论】:

  • 感谢您的回复。
  • 但是,我发现我收到错误消息:AttributeError: 'NoneType' object has no attribute 'configure' 删除、忘记、删除和我能想到的所有其他事情都会发生同样的情况。
  • 将l=Label(...).place(...) 分成l=Label(...) 和l.place(...)。 place 返回 None,因此您将 None 分配给 l 而不是标签引用
猜你喜欢
  • 1970-01-01
  • 2010-09-12
  • 2021-10-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-29
  • 1970-01-01
  • 2013-11-10
  • 1970-01-01
相关资源
最近更新 更多