大家好,我有一个只接受输入int的验证器。
class Validators:
def validate_numbers(self, text):
if text == "": return True
try:
value = int(text)
except ValueError:
return False
return 0 <= value <= 99999
def validateNumberEntry(self):
self.vcmd2 = (self.root.register(self.validate_numbers), "%P")
##creating entry
self.my_values_entry = Entry(self.tab1, validate="key",validatecommand=self.vcmd2)
self.my_values_entry.place(relx= 0.05, rely= 0.35, relwidth= 0.12)
它验证从0到99999的数字,例如85000
但现在有一种新的必要性,它允许范围,所以我也想接受"-"这个标志
例如:70000-85000
我怎么能只保留int数,并允许这个"-
";?
希望你能帮我。
最好使用正则表达式。重复使用validate_numbers
尝试:
import re
def validate_numbers(text):
if text == "": return True
try:
value = int(text)
except ValueError:
return False
return 0 <= value <= 99999
def validate_range(text):
pattern = r'(d+)-(d+)'
res = re.match(pattern, text)
if res:
return validate_numbers(res.group(1)) and validate_numbers(res.group(2))
else:
return False
assert validate_range('70000-85000')
assert not validate_range('70000-100000')
assert not validate_range('a-100000')