Rozdział 18 · Narzędzia do rysowania
Narzędzie liniowe
Kropka → szkic, który aktualizuje się na bieżąco → ostatnią pełną linią.
Linia to nie to samo co ołówek
Ołówek nie ma znanego końca: kreska kończy się tam, gdzie użytkownik ją zwalnia przycisk, a linia jest budowana z wielu małych segmentów na bieżąco. Narzędzie Linia ma wszystko w przeciwnym razie jest dokładnie JEDNA prosta linia od punktu nacisku do punktu uwolnienia i do samego końca gestu To tylko szkic, który można wielokrotnie zmieniać.
instrument_liniya.py
def on_press(self, event):
self.state.start_x, self.state.start_y = event.x, event.y
self.state.preview_id = self.canvas.create_line(
event.x, event.y, event.x, event.y,
fill=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,
)
def on_release(self, event):
self.canvas.delete(self.state.preview_id)
self.canvas.create_line(
self.state.start_x, self.state.start_y, event.x, event.y,
fill=self.state.color, width=self.state.width,
)
dash=(4, 2) — sygnał wizualny „to jeszcze nie jest finał”
Kreskowanie w podglądzie — to nie wymóg techniczny Canvas, lecz świadomy wybór: użytkownik powinien gołym okiem odróżnić szkic od gotowego kształtu. Rozdział 18.18 uogólnia tę metodę „utwórz podgląd → zaktualizuj coords() → zatwierdź w release” dla prostokąta i owalu — z linią działa dokładnie tak samo.
Praktyka: Narzędzie linii z podglądem
Moduł tkinter otwiera natywne okno Python — wykonaj lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie