Открыть окно и текстовое поле фокуса tkinter

У меня есть (второе) окно tkinter, которое при открытии не получает фокуса, а первое окно остается сфокусированным (хотя второе окно появляется перед другим). Он содержит текстовое поле, которое я хочу иметь, но мне нужно дважды щелкнуть его, чтобы ввести.

Как сфокусировать текстовое поле при открытии окна?

Мои попытки: textbox.focus_set() , window.grab_set() , window.focus_set()

Никто из них не сделал то, что хотел.

EDIT: вместо этого .focus_set() вызывает ошибку, когда (и только когда) закрывает главное окно: can't invoke "focus" command: application has been destroyed

Это мой текущий код ( tkWin – главное окно, tkcWin – второе окно):

 def click(self, field): import _tkinter if field != None: try: self.tkcWin = Tk()#creating window self.tkcWin.focus() self.tkcWin.title(field) self.tkcWin.geometry('300x100') self.mainframe = Frame(master=self.tkcWin,background="#60BF98") self.mainframe.place(x=0, y=0, width=300, height=300) self.textb = Text(master=self.mainframe) self.textb.place(x=0, y=50) self.textb.bind("<Return>",lambda a: self.setM(field)) self.textb.bind("<Return>",lambda a: self.tkcWin.destroy(),True) self.tkcWin.grab_set() self.tkWin.wait_window(self.tkcWin) self.textb.focus_set() hwnd = self.tkcWin.winfo_id() ctypes.windll.user32.SetFocus(hwnd) self.tkcWin.mainloop() except _tkinter.TclError: self.tkcWin.destroy() 

One Solution collect form web for “Открыть окно и текстовое поле фокуса tkinter”

Оказывается, вы можете просто вызвать метод deiconify() вторичного окна, а затем метод deiconify() виджета:

 toplevel.deiconify() text.focus_set() 

Вот оригинальная работа для Windows (больше не рекомендуется):

Начните с добавления import ctypes вверху.
Продолжайте и фокусируйте свой виджет, как и у вас: text.focus_set()
Получить hwnd второго окна: top_hwnd = toplevel.winfo_id()
И, наконец, активируйте второе окно с помощью: ctypes.windll.user32.SetFocus(top_hwnd)

  • Изменение значка по умолчанию в tkinter OptionMenu?
  • Python, Tkinter: если есть возможность установить флажки по умолчанию?
  • Список Python Tkinter
  • Как удалить светло-серая рамка вокруг моего виджета Canvas?
  • python tkinter overrideredirect; не может получать нажатия клавиш (Linux)
  • Как создать модальный диалог в tkinter?
  • Прозрачный фон в окне Tkinter
  • Добавление увеличения и уменьшения с помощью виджета холста Tkinter?
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.