【发布时间】:2018-11-19 00:34:14
【问题描述】:
我一直在研究 validatecommand 模式,比如这篇文章:
Interactively validating Entry widget content in tkinter
我的问题是,触发回调的条目小部件上的操作之一是“聚焦”。
我想用它来清除条目的内容,但是,条目对象似乎没有传递给回调。
我是不是以错误的方式处理这个问题?是否有另一种方法可以为条目小部件连接 focusin 事件并且仍然能够执行验证?
当然,我可以对 entry.delete 进行硬编码,但我希望它适用于 GUI 上的任何条目小部件。
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)
【问题讨论】: