standard para libreria library examples descargar python python-3.x tkinter tkinter-canvas

python - para - Cómo borrar Tkinter Canvas?



tkinter python 3 install linux (3)

Cada elemento del lienzo es un objeto del que Tkinter realiza un seguimiento. Si está limpiando la pantalla simplemente dibujando un rectángulo negro, entonces efectivamente ha creado una fuga de memoria; eventualmente su programa se bloqueará debido a los millones de elementos que se han dibujado.

Para borrar un lienzo, use el método de delete . Déle el parámetro especial "all" para eliminar todos los elementos en el lienzo (la cadena "all" "es una etiqueta especial que representa todos los elementos en el lienzo):

canvas.delete("all")

Si desea eliminar solo ciertos elementos en el lienzo (como objetos en primer plano, mientras deja los objetos de fondo en la pantalla) puede asignar etiquetas a cada elemento. Entonces, en lugar de "all" , podría proporcionar el nombre de una etiqueta.

Si está creando un juego, probablemente no necesite eliminar y volver a crear elementos. Por ejemplo, si tiene un objeto que se mueve a través de la pantalla, puede usar el método move o coords para mover el elemento.

Cuando dibujo una forma usando:

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

¿Tkinter realiza un seguimiento del hecho de que fue creado?

En un juego simple que estoy haciendo, mi código tiene un Frame crear un montón de rectángulos, y luego dibujar un gran rectángulo negro para borrar la pantalla, y luego dibujar otro conjunto de rectángulos actualizados, y así sucesivamente.

¿Estoy creando miles de objetos rectangulares en la memoria?

Sé que puede asignar el código de arriba a una variable, pero si no lo hago y solo dibujo directamente al lienzo, ¿permanece en la memoria o dibuja los píxeles, como en el lienzo de HTML5?


Los elementos dibujados en el lienzo son persistentes. create_rectangle devuelve un id de elemento del que debe hacer un seguimiento. Si no elimina elementos antiguos, su programa eventualmente se ralentizará.

De la introducción de Fredrik Lundh a Tkinter :

Tenga en cuenta que los elementos agregados al lienzo se conservarán hasta que los elimine. Si desea cambiar el dibujo, puede usar métodos como coords , itemconfig y move para modificar los elementos, o usar delete para eliminarlos.


Sí, creo que estás creando miles de objetos. Si está buscando una manera fácil de eliminar muchos de ellos a la vez, use las etiquetas de lona que se describen aquí . Esto le permite realizar la misma operación (como eliminación) en una gran cantidad de objetos.