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






Функцию проверки следует использовать только для проверки. Если вы хотите удалить, когда виджет получает фокус, вы должны установить привязку для события <FocusIn>.