Я использую Tkinter с python для простого интерфейса, где у меня есть текстовый виджет и кнопка. Когда кнопка нажата, я хочу, чтобы фокус курсора был установлен в текстовом виджете, используя метод focus_set().Tkinter focus_set() не работает в текстовом виджете
Я не понимаю, почему focus_set() не работает в моем коде. Я думаю, это может быть потому, что мой текстовый виджет находится внутри фрейма (frame1), и я не могу правильно получить доступ к этому виджету в моем методе startPaus(). Любые идеи, как я могу решить проблему?
class TypingField(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.submit_tog = True
self.initUI()
def initUI(self):
self.parent.title("Text Field")
self.pack(fill = BOTH, expand=True)
frame1 = Frame(self, width = 50, height =25)
frame1.pack(fill = X, expand=True)
self.scroll = Scrollbar(frame1)
self.scroll.pack(side = "right", fill = Y)
self.text = Text(frame1)
self.text.pack(fill=Y)
self.scroll.config(command=self.text.yview)
self.text.config(yscrollcommand=self.scroll.set)
frame2 = Frame(self)
frame2.pack(fill=X, expand=True)
self.submit = Button(frame2,text="Start Test")
self.submit.bind("<Button-1>", self.startPause)
self.submit.pack(fill=X)
def startPause(self, event):
if self.submit_tog:
self.submit.configure(text = "Pause")
self.text.focus_set()
else:
self.submit.configure(text = "Start Test")
self.submit_tog = not self.submit_tog
Спасибо за ответ, но по какой-то причине это не так для меня, фокус не в текстовом поле. И добавив свою линию, она по-прежнему не работает. – swang
Как только я сделаю self.text.focuse_set(), я проверяю фокус на self.focus_get() == self.text, и он возвращает True. Но основное внимание уделяется не текстовому полю, поскольку я не могу сразу вводить данные, не выбирая текстовое поле. Фокус все еще на кнопке – swang
Я сделал больше, чем добавил строку, так как я надеюсь, также выпрямил фрейм-беспорядок. Скопируйте и вставьте отправленный код, запустите его и посмотрите, что произойдет. –