Разместив текстовый виджет в моем графическом интерфейсе
from Tkinter import Text
textBox=Text(root, height=20, width=10)
textBox.pack()
всякий раз, когда я что-то пишу в этом поле, я не могу вернуть фокус обратно в любое другое место в окне. У меня есть некоторые клавиши, привязанные к событию, которые перестают работать после того, как я написал в виджете «Текст».
Есть ли способ перенаправить фокус в другое место после написания текста?
Is there a way of redirecting the focus to another place after writing text?
У каждого виджета есть метод с именем focus_set
, который можно использовать для перемещения фокуса клавиатуры на этот виджет.
Например, чтобы установить фокус на корневое окно, вы должны сделать:
root.focus_set()
Что делать, если холст и виджеты упакованы в корень? Это не меняет фокус, который и так был практически на корню?
@hirschme: я не понимаю вашего вопроса. focus_set
абсолютно изменит фокус, если вы вызовете его для виджета, который не имеет фокуса (и который может принимать фокус). Если вы вызовете его для виджета, который уже имеет фокус, ничего не изменится. Фокус клавиатуры может быть только на одном виджете за раз. Тот факт, что виджеты упакованы или не упакованы в общий родитель, никак не влияет на фокус.
Пожалуйста, нажмите клавишу возврата, чтобы вернуть фокус окну
import tkinter as tk
def onReturn(*event):
root.focus_set()
root = tk.Tk()
textBox= tk.Text(root, height=20, width=10)
textBox.pack()
root.bind("<Return>", onReturn)
root.mainloop()
привязать клавиши к главному окну.