Cykl życia gestu myszy
Rysowanie jednej figury to sekwencja trzech różnych wydarzeń, a nie jedno.
Jeden gest, trzy wydarzenia
Narysowanie pojedynczego kształtu myszką to nie jedno zdarzenie, lecz ciąg trzech różnych Typy, które razem tworzą gest „naciągnij”
| Wydarzenie | Kiedy się uruchamia |
|---|---|
<Button-1> | dokładnie raz — w momencie naciśnięcia lewego przycisku |
<B1-Motion> | wiele razy pod rząd, gdy przycisk jest przytrzymywany, a mysz porusza się |
<ButtonRelease-1> | dokładnie raz, gdy przycisk zostanie zwolniony |
<Motion> wywołuje się przy JAKIMKOLWIEK ruchu myszy nad płótnem — nawet jeśli nie naciśnięto żadnego przycisku. <B1-Motion> — tylko przy ruchu z wciśniętym LEWYM przyciskiem. Pomylenie ich to częsta przyczyna, dla której rysowanie zaczyna się bez kliknięcia (rozdział 18.31, Debug Lab).Wszystkie pożądane współrzędne przechodzą przez ten sam obiekt Eventto
a w rozdziale 17 — event.x, event.y.
event.widget jest również dostępny, choć zwykle jest dostępny na pojedynczym płótnie
Tak oczywiste.
Klik bez przeciągania — nie zapomnij o tym przypadku
Co jeśli użytkownik nacisnął i natychmiast puścił przycisk w pewnym momencie, nie poruszając myszką?
<B1-Motion> w tym przypadku nie wydarzy się ani raz, wydarzenie
uruchomi się tylko wtedy, gdy mysz faktycznie się poruszy. Ostateczne zastosowanie (Rozdział 18.32)
Wyraźnie to sprawdza: jeśli punkt startowy i punkt zwolnienia są prawie takie same, to linia, prostokąt
Albo po prostu nie powstaje owal – zamiast niewidzialnej figury o zerowym rozmiarze.