Мне нужна помощь с обработкой событий курсора в Python + Tkinter

1

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

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

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

Любая помощь будет очень признательна!

Спасибо заранее!

Уильям.

Теги:
tkinter
events
cursor

2 ответа

5

События < Фокус > и <FocusOut> это то, что вы хотите. Выполните следующий пример, и вы увидите, что вы вставляете и удаляете привязки, нажимаете ли вы или нажимаете вкладку (или 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

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

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню