Я хочу, чтобы проверить, выбрано или сфокусировано text_field
, так что я знаю, нужно ли что-то делать с его содержимым, когда пользователь нажимает кнопку ввода.Как проверить, имеет ли виджет фокус в Tkinter?
ответ
Если вы хотите что-то сделать, когда пользователь нажимает, введите, только если фокус находится на виджере ввода, просто добавьте привязку к виджету ввода. Он будет срабатывать только в том случае, если у этого виджета есть фокус. Например:
>>> from Tkinter import *
>>> root=Tk()
>>> e1=Entry(root)
>>> e1.pack()
>>> e2=Entry(root)
>>> e2.pack()
>>> def handleReturn(event):
... print "return: event.widget is",event.widget
... print "focus is:", root.focus_get()
...
>>> e1.bind("<Return>", handleReturn)
Обратите внимание, что обработчик вызывается только в том случае, если первая запись имеет фокус при нажатии на возврат.
Если вы действительно хотите глобальную привязку и вам нужно знать, какой виджет имеет фокус, используйте метод focus_get() для корневого объекта. В следующем примере привязка помещается в "." (Основной верхний уровень), так что это не срабатывает независимо от того, что имеет фокус:
>>> from Tkinter import *
>>> root=Tk()
>>> e1=Entry(root)
>>> e1.pack()
>>> e2=Entry(root)
>>> e2.pack()
>>> def handleReturn(event):
... print "return: event.widget is",event.widget
... print "focus is:",root.focus_get()
...
>>> root.bind("<Return>",handleReturn)
Обратите внимание на различие между этими двумя: в первом примере обработчик будет вызываться только при нажатии кнопки возврата в первом входе виджете. Нет необходимости проверять, какой виджет имеет фокус. Во втором примере обработчик будет вызван независимо от того, какой виджет имеет фокус.
Оба решения хороши в зависимости от того, что вам действительно нужно. Если ваша главная цель - только что-то сделать, когда пользователь нажимает кнопку возврата в конкретном виджете, используйте первую. Если вы хотите глобальную привязку, но в этой привязке делаете что-то другое, основанное на том, что имеет или не имеет фокуса, сделайте последний пример.
- 1. Как проверить, имеет ли фокус фокус?
- 2. проверить, имеет ли кнопка фокус
- 3. Как проверить, имеет ли определенный процесс фокус?
- 4. Как проверить, имеет ли функция AutomationElement фокус?
- 5. Как проверить, имеет ли мое приложение фокус?
- 6. Как проверить, имеет ли конкретный контроль фокус?
- 7. Как узнать, существует ли виджет в Tkinter?
- 8. wxPython: Как узнать, какой виджет имеет фокус?
- 9. Как узнать, что имеет фокус записи (Tkinter)
- 10. JavaScript/jQuery: проверить, имеет ли окно фокус
- 11. Dojo: как найти, если виджет имеет фокус в dojo
- 12. Как проверить, имеет ли вход фокус в структуре if?
- 13. Как изменить фон родительского виджета, когда дочерний виджет имеет фокус?
- 14. Как центрировать виджет Tkinter?
- 15. Как получить виджет Tkinter?
- 16. Проверьте, имеет ли SWF фокус
- 17. Как проверить, имеет ли текстовый виджет определенный контент?
- 18. Как проверить, действительно ли текстовое поле активно или имеет фокус?
- 19. Как проверить, имеет ли мой Element ID фокус?
- 20. Не могу понять, как проверить виджет ввода в tkinter
- 21. Отключить фокус для виджетов tkinter?
- 22. Уничтожьте виджет в tkinter
- 23. Как установить фокус для виджета Tkinter?
- 24. Как указать разные изображения, когда мой пользовательский виджет имеет фокус
- 25. Tkinter: виджет Treeview
- 26. Tkinter - входной виджет не принимает вход
- 27. Tkinter Проверьте текст виджет пуст
- 28. Определите, имеет ли фокус формы фокус
- 29. Виджет для ноутбука в Tkinter
- 30. Как установить фокус окна tkinter?
Возможно ли это, но не дожидаясь ввода нажатием. Например, когда пользователь просто выбирает запись для ввода чего-либо, можно ли узнать, что произошло? –
@ MuhamedHuseinbašić: да, это возможно. –
Как это сделать? : D Где я мог найти это? –