Rozdział 18 · Projekt: Aplikacja do rysowania
Pobieramy pozycję myszy
Wydarzenia Myszy pozwalają zamienić ruch kursora w prawdziwą linię na płótnie.
Pobieramy pozycję myszy
Podobnie jak w rozdziale 17, pomaga reagować na mysz .bind() — tylko zamiast zdarzeń klawiatury tutaj zdarzenia myszy: <Button-1>
(naciska lewy przycisk), <B1-Motion> (ruch z użyciem zacisku
lewym przyciskiem), <ButtonRelease-1> (przycisk został zwolniony).
poziciya_myshi.py
def pokazat_poziciyu(event):
pozicia_label.config(text=f"x={event.x}, y={event.y}")
canvas.bind("<Motion>", pokazat_poziciyu)
event.x oraz event.y — współrzędne
kursorem względem płótna, w tych samych jednostkach co Canvas.
Rysujemy linie
Trzy zdarzenia razem tworzą efekt „rysowania od punktu do punktu”
<Button-1>, narysuj linię do aktualnej pozycji na każdym z nich
<B1-Motion>:
risuem_linii.py
start_x, start_y = None, None
def nachalo_risovaniya(event):
global start_x, start_y
start_x, start_y = event.x, event.y
def vo_vremya_risovaniya(event):
canvas.create_line(start_x, start_y, event.x, event.y, fill=tekuschij_cvet, width=tolschina)
canvas.bind("<Button-1>", nachalo_risovaniya)
canvas.bind("<B1-Motion>", vo_vremya_risovaniya)
create_line — jak forward() w Turtle, tylko według współrzędnych
canvas.create_line(x1, y1, x2, y2) wyznacza granicę między dwoma punktami — koncepcyjnie tymi samymi jak goto() Turtle z rozdziału 6, tylko bez „żółwia”Praktyka: pozycja myszy i rysowanie linii
Moduł tkinter otwiera natywne okno Python — wykonaj lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie