【问题标题】:How to re-write text on a label in Tkinter如何在 Tkinter 中的标签上重写文本
【发布时间】:2016-11-16 18:26:30
【问题描述】:

我正在开发一段代码,它需要一个函数来检查用户通过输入框输入的输入是否是在一定范围内的有效整数,尽管我已经设法让程序每次用户输入无效整数时(通过标签)向上输出一条错误消息,而不是覆盖标签上先前存在的文本,它只是输出另一个,将旧的错误消息留在那里。如何让它覆盖/重写预先存在的标签?

到目前为止,这是我的功能:

def Entry_check():

ErrorMessage = Label(text = '', fg = 'red')
ErrorMessage.grid()

if a.get().isdigit():    #Let 'a' be entry #1
    if int(a.get()) < 1 or int(a.get()) > 10:
        ErrorMessage.config(text = 'This is invalid')
    else:
        Var1 = a.get()    #Var1 now assigned to value in entry #1
        if b.get().isdigit():    #Let 'b' be entry #2
            if int(b.get()) < 2 or int(b.get()) > 5:
                ErrorMessage.config(text = 'This is invalid')
            else:
                Var2 = b.get()    #Var2 now assigned to value in entry #2
        else:
            ErrorMessage.config(text = 'This is invalid')
else:
    ErrorMessage.config(text = 'This is invalid')

非常感谢任何帮助。

【问题讨论】:

  • ErrorMessage['text'] = "new text"ErrorMessage.config(text="new text")
  • 您是否收到错误消息?始终显示有问题的完整错误消息。你在哪里声明 IntErrorb 是什么?
  • 没有错误信息,并且b,如注释,是条目#2(同理,a是条目#1)。很抱歉说'IntError',应该说'ErrorMessage',我现在已经改变了。谢谢。

标签: python python-3.x tkinter label


【解决方案1】:

每次进行错误检查时都会创建一个新标签,因为这一行:

ErrorMessage = Label(text = '', fg = 'red')

每次调用Entry_check时执行。

将这一行移到函数之外,这样它只会被创建一次。如果不查看其余代码,就很难说出确切的位置——也许是您为窗口创建了所有其他小部件的位置。

(为了可维护性,您还应该将 ErrorMessage.grid() 连同它一起移动,但我不认为它在现在的位置是有害的)

【讨论】:

  • 现在完美运行。非常感谢!我不知道我怎么会错过这样的事情。
猜你喜欢
  • 2016-09-16
  • 1970-01-01
  • 1970-01-01
  • 2011-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多