类似的验证功能不起作用
Similar validation functions don't work
首先,很抱歉没有使用 OOP,我只是决定为这么小的程序避免复杂性。
所以这是我的程序(基本上,它是一个 Entry 小部件,允许仅包含最大长度为 5 的整数的文本):
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
我感觉问题出在这里:
except:
return False
可能最大长度部分不适用于 try-except... 但是:
def validation_function(text):
try:
if len(text) <= 5:
return True
else:
return False
except:
return False
工作正常。但是只有最大长度部分,我也希望它只允许整数。我已经在第一个示例中完成了,但我的问题是:当我用唯一的整数部分更改最大长度部分的位置时,为什么它不起作用?
text
是一个 int
...你不能调用 len(int)
...它会引发异常
试试这个
def validation_function(text):
try:
int(text)
except:
return False
if len(text) <= 5:
return True
return False
首先,很抱歉没有使用 OOP,我只是决定为这么小的程序避免复杂性。 所以这是我的程序(基本上,它是一个 Entry 小部件,允许仅包含最大长度为 5 的整数的文本):
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
我感觉问题出在这里:
except:
return False
可能最大长度部分不适用于 try-except... 但是:
def validation_function(text):
try:
if len(text) <= 5:
return True
else:
return False
except:
return False
工作正常。但是只有最大长度部分,我也希望它只允许整数。我已经在第一个示例中完成了,但我的问题是:当我用唯一的整数部分更改最大长度部分的位置时,为什么它不起作用?
text
是一个 int
...你不能调用 len(int)
...它会引发异常
试试这个
def validation_function(text):
try:
int(text)
except:
return False
if len(text) <= 5:
return True
return False