Zdarzenia i powiązania w tkinter

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 7058 razy

Zdarzenia są powiązane z wywoływaniem pewnej funkcji, która przyjmuje określone parametry w odpowiedzi na określone zdarzenie. Aby taka odpowiedź mogła zostać wygenerowana, trzeba jakąś funkcję lub metodę obiektu jakiejś klasy powiązać z danym zdarzeniem. Pewne przykłady były już pokazywane na wcześniejszych stronach, oto jeden z nich:

class CanvasDrawing: def __init__(self): self.window = tk.Tk() self.window.title("Rysowanie") self.window.geometry("500x500") self.canvas = tk.Canvas(self.window, width = 450, height = 450) # tworzę kontrolkę typu Canvas self.canvas.place( x= 25, y = 25) # umieszczam ją na ekranie self.canvas.create_rectangle((0, 0, 450, 450), fill="#ffffff", width = 0) # rysuję biały prostokąt self.canvas.bind("<B1-Motion>", self.draw) # podpinam zdarzenie pod kontrolkę self.window.mainloop() def draw(self, event): # metoda, którą podepnę pod zdarzenie ruchu myszki nad kontrolką canvas z wciśniętym lewym przyciskiem myszy self.canvas.create_oval((event.x - 2), (event.y - 2), (event.x + 2), (event.y + 2)) # tworzę okrąg na kontrolce canvas przy każdym ruchu myszką can = CanvasDrawing()

Wynikiem działania powyższego kodu, otrzymuje się okno programu z obiektem klasy Canvas, do którego podpięte została metoda draw (linijka 15) co dzieje się za pomocą metody bind obiektu canvas (linijka 13). Dzięki temu możliwe jest rysowanie po tejże kontrolce w odpowiedzi na ruch myszki z wciśniętym lewym przyciskiem myszy.

Przykład podpięcia pod kontrolkę canvas zdarzenia ruchu myszki z wciśniętym lewym przyciskiem
Rys. 1
Przykład podpięcia pod kontrolkę canvas zdarzenia ruchu myszki z wciśniętym lewym przyciskiem

Lista formatów zdarzeń

Oto lista formatów możliwych zdarzeń do podpięcia pod dowolną kontrolkę za pomocą metody binds:

Atrybuty klasy Event

Każda metoda lub funkcja podpięta pod wyżej wymienione formaty zdarzeń musi przyjmować jeden argument, który jest obiektem klasy Event. Atrybuty tej klasy są następujące:

Propozycje książek