我一直在研究验证命令模式,就像这篇文章中所述:
Interactively validating Entry widget content in tkinter
我的问题是,在entry小部件上触发回调的操作之一是“focusin”。
我想用它来清除条目的内容,但是,条目对象似乎并没有被传递给回调。
我是不是走错了路?是否有其他方法可以连接entry小部件的focusin事件,同时仍然能够执行验证?
当然,我可以对entry.delete进行硬编码,但我希望它适用于图形用户界面上的任何入口小部件。
def onValidate(self, d, i, P, s, S, v, V, W):
if self._is_number(S):
return True
else:
self.bell()
return False
def _add_widgets(self):
vcmd = (self.register(self.onValidate), '%d', '%i', '%P', '%s', '%S', '%v', '%V', '%W')
self.f_entry = ttk.Entry(self.window, width=5, validate="all", textvariable=self.fahrenheit, validatecommand=vcmd).grid(row=1, column=2)
发布于 2018-06-09 10:30:27
验证功能应仅用于验证。如果您想删除小部件何时成为焦点,您应该在<FocusIn>
事件上设置一个绑定。
https://stackoverflow.com/questions/50769264
复制相似问题