Supprimer les widgets customtkinter

Haperz_15 - Modifié le 7 juin 2024 à 16:11
mamiemando Messages postés 33433 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 décembre 2024 - 7 juin 2024 à 16:14

Bonjour,

Je cherche de l'aide pour résoudre un problème avec customtkinter.

Mon code s'ouvre sur une fenêtre avec un simple bouton customtkinter. Lorsque l'on clique sur ce bouton, j'aimerais pouvoir le faire disparaître pour rendre la fenêtre vierge et pouvoir placer de nouveaux éléments dessus.

Il semblerait que les méthodes "destroy()", ".pack_forget()", et "place_forget()" ne fonctionnent pas avec customtkinter. 

Un gentil citadin m'apporterait-t-il son aide ?

Merci d'avance et bonne journée à vous ! :)


Windows / Firefox 126.0

3 réponses

Bonsoir,

Sachant que CTkButton hérite de tkinter.Button, il y a donc toutes les méthodes globales aux widgets tkinter.

Chez moi ceci :

>>> window = customtkinter.CTk()
>>> button = customtkinter.CTkButton(window)
>>> button.grid()
>>> button.grid_forget()

Affiche bien une fenêtre avec un bouton, puis le grid_forget retire bien l'affichage de ce bouton, pack et pack_forget existe aussi dans les méthodes.

Donc, il y a quelque chose que tu ne dois pas faire correctement, il faudrait un code reproduisant le problème que tu évoques.

1

Rebonsoir, je viens de créer un nouveau code, j'ai essayé avec votre méthode, et voici l'erreur que j'obtiens :

AttributeError: 'NoneType' object has no attribute 'grid_forget'

Et voici mon code:

import customtkinter

customtkinter.set_appearance_mode("Light")


def test():
    Button.grid_forget()
    
window = customtkinter.CTk()
window.title("titre")
window.geometry("600x600")

Button = customtkinter.CTkButton(
    window,
    text="clique",
    command=test
).grid()

window.mainloop()
1

Indice : grid() retourne None

0

C'est à dire ?

0

Si tu mets à la suite la méthode grid() à ton Button, alors Button n'est plus un objet CtkButton, mais le retour de grid, et comme grid retourne None, voilà pourquoi cette erreur.

En conséquence :

Button = customtkinter.CTkButton(window, text="clique", command=test)
Button.grid()
0
mamiemando Messages postés 33433 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 décembre 2024 7 809
7 juin 2024 à 16:14

J'ajouterais qu'il serait avisé de renommer Button en button afin qu'on ne confonde pas dans le reste du code la classe et l'instance de classe.

0