Eventy w python tkinter

Eventy to wbudowane zachowania użytkownika, które mogą być nasłuchiwane przez system, np: kliknięcie myszy, wciśnięcie klawisza, ruch kursora, itp.
Możemy wywołać odpowiednie funkcje w chwili, kiedy taki event będzie miał miejsce na określonym widgetcie.
Nasłuchiwanie eventów dodajemy za pomocą metody bind(), gdzie podajemy nazwę eventu oraz nazwę funkcji, która ma się wywołać.

Przykład wywołania funkcji my_funct po kliknięciu myszy w oknie programu(root):

from tkinter import *
root = Tk()

def my_func(event):
    my_label = Label(root, text="hej")
    my_label.pack()

def my_func2(event):
    my_label = Label(root, text="hej2")
    my_label.pack()

root.bind('<Button-1>',my_func)
root.bind('<Return>',my_func2, add='+')

root.mainloop()

Jeśli chcemy dodać więcej funkcji do danego eventa, należy dodać 3 argument add=’+’, Bez tego, kolejne eventy nadpiszą te poprzednie, np:

root.bind('<Return>',my_func2, add='+')

W przypadku kliknięcia myszy można również użyć prostszej metody, jaką jest argument command, podczas tworzenia obiektu, np:

from tkinter import *
from tkinter import messagebox
root = Tk()
root.geometry('600x300+50+50')
 
def my_func():
    messagebox.showinfo(title="Event", message="Działa")
 
my_btn= Button(root, text="Run my_func", command=my_func)
my_btn.pack()
 
root.mainloop()

Jeśli chcemy dodać argument, do wywołania funkcji, należy zrobić to z użyciem wyrażenia lambda, np:

def my_func(msg):
    messagebox.showinfo(title="Event", message=msg)
 
my_btn= Button(root, text="Run my_func", command=lambda:my_func("Działa świetnie!"))
Przewiń do góry