удалить ткинтер по фокусу - PullRequest
0 голосов
/ 09 июня 2018

Я изучал шаблоны 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)

1 Ответ

0 голосов
/ 09 июня 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...