条目tkinter上的验证器



大家好,我有一个只接受输入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')

相关内容

  • 没有找到相关文章

最新更新