Мне нужна помощь с обработкой событий курсора в Python + Tkinter - PullRequest
1 голос
/ 17 октября 2008

Я создаю код, в котором я хотел бы иметь возможность генерировать событие, когда пользователь меняет фокус курсора с виджета «Запись» на любое другое место, например, другой виджет ввода, кнопку ...

Пока у меня появилась идея связать TAB и щелчок мышью, хотя, если я связываю щелчок мыши с виджетом Entry, я получаю события мыши только внутри виджета Entry.

Как выполнить генерацию событий, когда виджет теряет фокус курсора?

Любая помощь будет высоко ценится!

Заранее спасибо!

Уильям.

Ответы [ 2 ]

5 голосов
/ 22 октября 2008

События и - это то, что вы хотите. Запустите следующий пример, и вы увидите, что привязки фокуса входят и выходят при нажатии или нажатии клавиши tab (или shift-tab), когда фокус находится в одном из виджетов ввода.

from Tkinter import *

def main():
    global text

    root=Tk()

    l1=Label(root,text="Field 1:")
    l2=Label(root,text="Field 2:")
    t1=Text(root,height=4,width=40)
    e1=Entry(root)
    e2=Entry(root)
    l1.grid(row=0,column=0,sticky="e")
    e1.grid(row=0,column=1,sticky="ew")
    l2.grid(row=1,column=0,sticky="e")
    e2.grid(row=1,column=1,sticky="ew")
    t1.grid(row=2,column=0,columnspan=2,sticky="nw")

    root.grid_columnconfigure(1,weight=1)
    root.grid_rowconfigure(2,weight=1)

    root.bind_class("Entry","<FocusOut>",focusOutHandler)
    root.bind_class("Entry","<FocusIn>",focusInHandler)

    text = t1
    root.mainloop()

def focusInHandler(event):
    text.insert("end","FocusIn %s\n" % event.widget)
    text.see("end")

def focusOutHandler(event):
    text.insert("end","FocusOut %s\n" % event.widget)
    text.see("end")


if __name__ == "__main__":
    main();
0 голосов
/ 17 октября 2008

Это не относится к tkinter и не основано на фокусе, но я получил ответ на похожий вопрос здесь:

Обнаружение щелчков мышью в окнах с использованием Python

Я давно не делал tkinter, но, похоже, есть события "FocusIn" и "FocusOut". Возможно, вы сможете связать и отследить их, чтобы решить вашу проблему.

От: http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm

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