使用十六进制值的Python ttk条目验证

2024-10-03 21:31:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在想一种方法来验证一个ttk输入框是否有4个字符的十六进制值。在

我找到了一个解决方案,但我不确定是否有更正确的/Python式的方法。在

这是入境声明:

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函数:

^{pr2}$

棘手的是,如果我使用int(p,16)而不检查max值并开始写一个0,它将不起作用,因为int('0')是错误的int('0',16)。在

所以,再一次。是这样做的吗?有没有更好或更“Python式”的方法?在


Tags: 方法selfregister声明解决方案tkintentry
1条回答
网友
1楼 · 发布于 2024-10-03 21:31:16

假设字符串中没有特殊字符(如$或0x):

def OnValidateCheckSum(self, P, d):
    valid_hex_char = lambda c: c in 'abcdef0123456789'
    return (len(P) < 5) and (all(valid_hex_char(z) for z in P.lower()))

相关问题 更多 >