Я изучал шаблоны validatecommand, как в этом посте:
Интерактивная проверка содержимого виджета Entry в tkinter
Мой вопрос заключается в том, что одно из действий над записьювиджет, который запускает обратный вызов, - 'focusin'.
Я хотел бы использовать это для очистки содержимого записи, однако, объект входа, по-видимому, не передается в обратный вызов.
Я неправильно подхожу к этому?Есть ли другой способ связать событие 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)