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
Otwórz praktykę →