Rozdział 18 · Historia i dokument
Czyszczenie płótna
Nieodwracalna akcja wymaga potwierdzenia — i musi wyzerować historię cofania razem z dokumentem.
„Oczyszczenie”
Przycisk „Wyczyść płótno” usuwa CAŁY rysunek naraz. W przeciwieństwie do Undo, tutaj nie ma poprzedniego stanu, do którego można łatwo wrócić — jeśli historia cofania również jest czyszczona wraz z dokumentem. Dlatego przed nieodwracalnym działaniem warto poprosić o potwierdzenie, ale tylko jeśli jest co stracić:
ochistka_holsta.py
def clear_canvas(self):
if self.document and not messagebox.askyesno(
„Wyczyść płótno”, „Usunąć cały rysunek bez możliwości cofnięcia?”
):
return
self.document.clear()
self.undo_stack.clear()
self.redo_stack.clear()
self.render_document()
Sprzątanie płótna zapomniało usunąć historię
Jeśli usunąć tylko figury (
self.document.clear()), ale nie dotykaj undo_stack, — undo() nie będzie robić NIC na zewnątrz po wyczyszczeniu (nie ma czego usuwać z pustego dokumentu), ale przechodzi przestarzała akcja do redo_stack. Następnie Ctrl+Y przywróci na płótno kształty, które użytkownik właśnie usunął „Czyść”Nie zawsze pytamy o potwierdzenie
Jeśli
self.document jest już pusty, pytanie „naprawdę wyczyścić?” nie ma sensu — zbędne okno dialogowe tylko denerwuje. Sprawdzenie if self.document and ... pomija potwierdzenie w tym konkretnym przypadku.Praktyka: Czyść płótno bezpiecznie
Moduł tkinter otwiera natywne okno Python — wykonaj lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie