Supprimer les widgets customtkinter

Haperz_15 -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -

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

  1. kroki
     

    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
    1. Haperz_15
       

      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
  2. kroki
     

    Indice : grid() retourne None

    0
    1. Haperz_15
       

      C'est à dire ?

      0
  3. kroki
     

    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
    1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
       

      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