我正在开发一段代码,该代码需要一个函数来检查用户通过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')
非常感谢任何帮助。
答案 0 :(得分:3)
每次执行错误检查时都会创建一个新的Label,因为这一行:
ErrorMessage = Label(text = '', fg = 'red')
每次拨打Entry_check
时都会执行。
将此行移到函数外部,使其仅创建一次。很难说在没有看到其余代码的情况下确切的位置 - 也许在你为窗口创建所有其他小部件的地方。
(出于可维护性的考虑,您也应该随身携带ErrorMessage.grid()
,但我认为它现在不会受到影响。