Maison > développement back-end > Tutoriel Python > Pourquoi mes images Tkinter ne s'affichent-elles pas à l'intérieur des classes ?

Pourquoi mes images Tkinter ne s'affichent-elles pas à l'intérieur des classes ?

Susan Sarandon
Libérer: 2024-12-23 17:06:26
original
601 Les gens l'ont consulté

Why Aren't My Tkinter Images Displaying Inside Classes?

Pourquoi l'image Tkinter ne s'affiche pas dans les classes : un cas curieux

Dans Tkinter, une bibliothèque GUI populaire pour Python, il arrive souvent que les images n'apparaissent pas lors de leur création dans des fonctions ou des méthodes de classe. Examinons la raison de ce comportement particulier.

Lorsque vous utilisez Tkinter en dehors d'une classe, il est simple de créer et d'afficher des images. Comme démontré dans le premier extrait de code, déclarez simplement l'image à l'aide de tkinter.PhotoImage et affectez-la au canevas. Cependant, lorsque le code est encapsulé dans une classe (comme indiqué dans le deuxième extrait), l'image cesse de s'afficher.

La clé du problème réside dans la compréhension de la durée de vie des variables de Python. Les variables locales, telles que la variable photo dans l'exemple fourni, n'existent que dans le cadre de la fonction ou de la méthode dans laquelle elles sont définies. Dans le cas de la classe, la variable photo est détruite après la création de l'instance de classe, ce qui rend Tkinter incapable pour y accéder plus.

Pour remédier à cette situation, il est nécessaire de stocker une référence à l'image en dehors du cadre de la fonction ou de la méthode. Ceci peut être réalisé en attribuant la variable photo à l'instance de classe elle-même. Comme démontré dans la solution fournie :

self.photo = tkinter.PhotoImage(...)
Copier après la connexion

Ce faisant, photo devient une variable d'instance et sa durée de vie est prolongée pour la durée d'existence de l'instance de classe. Cela permet à Tkinter d'accéder à l'image et de l'afficher comme prévu.

Si vous rencontrez des problèmes similaires avec des images qui n'apparaissent pas dans Tkinter, n'oubliez pas de vérifier la portée de vos variables d'image et de vous assurer qu'elles persistent au-delà de la fonction ou de la méthode dans lequel ils sont créés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal