Как очистить холст Tkinter?

Когда я рисую форму, используя:

canvas.create_rectangle(10, 10, 50, 50, color="green") 

Означает ли Tkinter факт, что он был создан?

В простой игре, которую я делаю, мой код имеет один Frame создающий кучу прямоугольников, а затем рисует большой черный прямоугольник, чтобы очистить экран, а затем нарисовать другой набор обновленных прямоугольников и т. Д.

Я создаю тысячи объектов прямоугольника в памяти?

Я знаю, что вы можете назначить код выше переменной, но если я этого не делаю и просто рисую непосредственно на холст, он останется в памяти или просто нарисует пиксели, как в холсте HTML5?

3 Solutions collect form web for “Как очистить холст Tkinter?”

Каждый элемент canvas является объектом, который отслеживает Tkinter. Если вы очищаете экран, просто рисуя черный прямоугольник, вы фактически создали утечку памяти – в конце концов ваша программа выйдет из строя из-за миллионов предметов, которые были нарисованы.

Чтобы очистить холст, используйте метод удаления . Дайте ему специальный параметр "all" для удаления всех элементов на холсте (строка "all" »является специальным тегом, который представляет все элементы на холсте):

 canvas.delete("all") 

Если вы хотите удалить только определенные элементы на холсте (например, объекты переднего плана, оставив на экране фоновые объекты), вы можете назначить теги каждому элементу. Затем вместо "all" вы можете указать имя тега.

Если вы создаете игру, вам, вероятно, не нужно удалять и воссоздавать элементы. Например, если у вас есть объект, который перемещается по экрану, вы можете использовать метод move or coords для перемещения элемента.

Элементы, нарисованные на холсте, являются постоянными. create_rectangle возвращает идентификатор элемента, который нужно отслеживать. Если вы не удалите старые предметы, ваша программа в конечном итоге замедлит работу.

Из введения Фредрика Лундха к Tkinter :

Обратите внимание, что элементы, добавленные в холст, сохраняются до тех пор, пока вы их не удалите. Если вы хотите изменить рисунок, вы можете использовать такие методы, как coords , itemconfig , и move для изменения элементов или использовать delete для их удаления.

Да, я считаю, что вы создаете тысячи объектов. Если вы ищете простой способ удалить кучу из них сразу, используйте теги холста, описанные здесь . Это позволяет выполнять ту же операцию (например, удаление) на большом количестве объектов.

  • Python, Tkinter - Вставка текста в окна холста
  • Можете ли вы изменить атрибуты объекта Canvas Canvas после создания?
  • Вставка gif изображения в холст с помощью Tkinter
  • Черепаха от руки
  • Матрица с изображением на tkinter Canvas
  • Tkinter Canvas перемещает элемент на верхний уровень
  • Понимание Tkinter после ()
  • Как удалить светло-серая рамка вокруг моего виджета Canvas?
  •  
    Interesting Posts for Van-Lav

    Python – я не вижу, что моя ошибка, потому что окно сразу исчезает

    Есть ли функция Numpy, чтобы вернуть первый индекс чего-то в массиве?

    ImageMagick Преобразование из .ps в .png, запуск из python – недопустимый параметр

    Хотите извлечь строку с помощью regex

    ошибка установки python python

    Как подсчитать частоту элементов в списке?

    когда использовать if vs elif в python

    Почему у Python нет истинных констант? Разве это не опасно?

    Два очень близких регулярных выражения с утверждениями в Python – почему re.split () ведет себя по-другому?

    Postgres: INSERT, если не существует

    TypeError: Ошибка при вызове баз метакласса класс нового стиля не может иметь только классические базы

    Большое сжатие файлов с помощью python

    Letsencrypt ImportError: без интерфейса имени модуля на amazon linux при обновлении

    Как получить токен доступа пользователя в Python

    кто может сказать мне, что можно назвать встроенными функциями в следующем коде

    Python - лучший язык программирования в мире.