如何在Tkinter中的标签上重写文本

时间:2016-11-16 18:26:31

标签: python python-3.x tkinter label

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

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

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')

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

每次执行错误检查时都会创建一个新的Label,因为这一行:

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

每次拨打Entry_check时都会执行。

将此行移到函数外部,使其仅创建一次。很难说在没有看到其余代码的情况下确切的位置 - 也许在你为窗口创建所有其他小部件的地方。

(出于可维护性的考虑,您也应该随身携带ErrorMessage.grid(),但我认为它现在不会受到影响。