Как очистить холст 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 - Вставка текста в окна холста
  • Внедрение матового полотна в графический интерфейс tkinter - график не отображается, но ошибка не возникает
  • Прозрачный холст Python tkinter
  • Понимание Tkinter после ()
  • Матрица с изображением на tkinter Canvas
  • Использовать событие matplotlib pick для запуска при щелчке по центру квадратов pcolormesh?
  • Как удалить светло-серая рамка вокруг моего виджета Canvas?
  • Как сделать кнопку с помощью виджета tkinter Canvas?
  • Python - лучший язык программирования в мире.