首先,抱歉不使用OOP,我只是决定避免这么小的程序的复杂性。 所以这是我的程序(基本上,它是一个Entry小部件,它允许一个只包含最大长度为5的整数的文本):
self.rooms.get(returned_scene)
工作正常。但是当我对验证函数的主体进行一些改动时,它不起作用:
from tkinter import *
root = Tk()
root.title("Entry Validation")
root.geometry("300x100")
def validation_function(text):
if len(text) <= 5:
try:
text = int(text)
return True
except:
return False
else:
return False
vcmd = root.register(validation_function)
entry = Entry(root, validate='key', validatecommand=(vcmd, "%P"))
entry.pack()
我觉得问题出在这里:
def validation_function(text):
try:
text = int(text)
if len(text) <= 5:
return True
else:
return False
except:
return False
可能最大长度部分与try-except不一样......但是:
except:
return False
正常工作。但是只有最大长度部分,我也希望它只允许整数。我在第一个例子中完成了它,但我的问题是:当我用唯一的整数部分更改最大长度部分的位置时,为什么它不起作用?
答案 0 :(得分:3)
text
是int
...您无法致电len(int)
...它会引发异常
试试这个
def validation_function(text):
try:
int(text)
except:
return False
if len(text) <= 5:
return True
return False