2015-05-07 4 views
0

Я пишу текстовый редактор в Python 3 с tkinter, и я пытаюсь добавить функцию отмены, но для регистрации изменений пользователя мне нужно зарегистрировать редактирование, когда они печатают букву. Тем не менее, я не хочу регистрировать введенное письмо, если они вышли из текстового виджета. Мой вопрос таков:Определить, находится ли курсор в текстовом виджет

Могу ли я определить, находится ли курсор текстового виджета в виджетах? Есть ли атрибут текстового виджета или привязка, которую я могу поместить в главное окно, чтобы определить, находится ли курсор в текстовом виджете?

+0

Вы хотите сказать, что хотите определить, имеет ли виджет «фокус»? –

+0

Возможный дубликат [Как проверить, имеет ли виджет фокус в Tkinter?] (Http://stackoverflow.com/questions/1385921/how-do-you-check-if-a-widget-has-focus-in -tkinter) – Karl

+0

Я действительно не знаю, что такое «фокус» –

ответ

4

Если ваши привязки находятся в текстовом виджетах, и если фокус не в текстовом виджетах, ваш текстовый виджет никогда не увидит нажатия клавиши. Управление фокусом встроено в Tkinter, поэтому вам не нужно ничего делать.

Чтобы ответить на ваш конкретный вопрос, вы можете использовать метод focus_get для извлечения виджета, который в настоящее время имеет фокус клавиатуры. Вы также можете связываться с <FocusIn> и <FocusOut>, чтобы получать уведомления, когда виджет получает или теряет фокус.

Кроме того, знаете ли вы, что текстовый виджет имеет встроенную функцию отмены? На веб-сайте New Mexico Tech есть хороший краткий обзор: http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/text-undo-stack.html

+0

Спасибо. Он отлично работает, я не понимал, что вы можете даже привязать привязки к текстовым виджетам. –

Смежные вопросы