Невозможно установить фокус () для виджета ввода - PullRequest
1 голос
/ 27 марта 2019

Когда я пытаюсь установить фокус на виджете ввода, я получаю сообщение об ошибке,

Traceback (most recent call last):
  File "C:/PythonPrograms/Tkinter/test_case.py", line 13, in <module>
    entSearch.focus()
AttributeError: 'NoneType' object has no attribute 'focus'

При поиске других случаев возникновения этой ошибки при переполнении стека исправление, по-видимому, вызывало метод grid в отдельной строке.

entSearch = Entry(main, textvariable = text, width = 50, font='arial 12')
entSearch = entSearch.grid(row = 0, column = 1, sticky=W)

вместо

entSearch = Entry(main,
                  textvariable = text,
                  width = 50, 
                  font='arial 12').grid(row = 0, column = 1, sticky=W)

К сожалению, это исправление не работает для меня.

from tkinter import *

main = Tk()
main.title("Test Case")
main.geometry('750x750')
main.configure(background='ivory3')

text = StringVar()

entSearch = Entry(main, textvariable = text, width = 50, font='arial 12')
entSearch = entSearch.grid(row = 0, column = 1, sticky=W)

entSearch.focus()

main.mainloop()

Ожидается, что виджет ввода будет в фокусе при запуске кода.

Но вместо этого я получаю ошибку

Traceback (most recent call last):
  File "C:/PythonPrograms/Tkinter/test_case.py", line 13, in <module>
    entSearch.focus()
AttributeError: 'NoneType' object has no attribute 'focus'

1 Ответ

2 голосов
/ 27 марта 2019

Функция, которую вы ищете - focus_set(), а не focus().Краткая документация о методе focus_set().

РЕДАКТИРОВАТЬ:

Кроме того, строка entSearch = entSearch.grid(row = 0, column = 1, sticky=W) также вызывает проблемы.По умолчанию метод grid не возвращает значение (отображает только данный виджет).Следовательно, он возвращает None - вы сохраняете это значение в entSearch, что означает, что вы не можете «сфокусироваться» на None объекте.Чтобы решить эту проблему, просто удалите назначение и отобразите свой виджет следующим образом: entSearch.grid(row = 0, column = 1, sticky=W)

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