我一直在想一种方法来验证 ttk 输入框的 Hex 值为 4 个字符。
我找到了一个解决方案,但我不确定是否有更正确/pythonist 的方法来做到这一点。
这是条目声明:
vcdmCheckSum = (self.register(self.OnValidateCheckSum), '%P', '%d')
self.tlCheckSumEntry = Entry(self, validate="key", validatecommand=vcdmCheckSum, width=10)
self.tlCheckSumEntry.grid(row=self.rowOptions2, column=self.columnOptions1, sticky=tk.W+tk.N, padx=5, pady=5)
这是我的 OnValidateCheckSum 函数:
def OnValidateCheckSum(self, P, d):
# If you are not writting but deleting
if d <> '1':
return True
try:
return (len(P) < 5) and (int(P, 16) <= int('FFFF', 16))
except:
return False
棘手的是,如果我在不检查最大值的情况下使用 int(P, 16) 并开始写入 0 它不会工作,因为 int('0') 与 int('0', 16) 一样是假的。
所以,再一次。这是这样做的方法吗?有没有更好或更“pythonic”的方式来做到这一点?