Rozdział 18 · Narzędzia do rysowania
Zapowiedź na żywo: coords()
Pojedynczy element jest tworzony raz i aktualizowany wielokrotnie, zamiast strumienia jednorazowych kształtów.
Nie odtwarzaj kształtu dla każdego ruchu
Naiwne podejście do podglądu — na każdej <B1-Motion> usuń
starą szkicową figurę i stwórz nową. Działa, ale zmusza Canvas do bezustannego
wyrzucania i ponownego tworzenia elementów — a przy okazji traci wszelkie indywidualne ustawienia,
które ustawiłeś może tylko raz.
zhivoe_prevyu.py
def on_press(self, event):
self.state.preview_id = self.canvas.create_rectangle(
event.x, event.y, event.x, event.y,
outline=self.state.color, width=self.state.width, dash=(4, 2),
)
def on_drag(self, event):
self.canvas.coords(
self.state.preview_id,
self.state.start_x, self.state.start_y, event.x, event.y,
)
coords() akceptuje tyle liczb, ile potrzebuje figura
Dla linii i prostokąta cztery liczby (dwa punkty). Dla wielopunktowej polilinii (na przykład rosnący kontur ołówkiem), tyle par chcesz
x, y. Najważniejsze to sprawa coords() z tym samym item_id, który zwrócił oryginalny create_*.Praktyka: Zapowiedź na żywo przez coords()
Moduł tkinter otwiera natywne okno Python — wykonaj lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie