Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème Tkinter/Classes

Sujet résolu
    23 juillet 2013 à 15:05:10

    Bonjour tout le monde !

    Je me remet doucement au python après un long moment et je rencontre actuellement un problème "de débutant" je dirait (même si je suis moi même débutant :D)

    Je cherche à créer un fenêtre avec tkinter, dans une classe, pour cela je déclare mes self dans __init__ mais lorsque j'essaye d'accéder à ceux ci depuis une fonction de ma classe, python m'explique gentiment qu'il ne connait pas d'attribut de ce nom...

    J'ai simplifié mon code pour plus de lisibilité, donc inutile de chercher une utilité au programme ^^

    import tkinter
    
    class MaClasse :
        
        def __init__ (self):
            
            #Création de la fenêtre
            self.fenetre = tkinter.Tk()
            self.fenetre.geometry("300x300")
            
            
            #Widgets de la fonction 1
            self.bouton0 = tkinter.Button(self.fenetre,text="Cliquez ici",command = MaClasse.fonction2(self) ,width=25,height=1)
            
            #Widgets de la fonction 2
            self.bouton1 = tkinter.Button(self.fenetre,text="Cliquez ici",command = None ,width=25,height=1)
    
    
            
                    
            
        def fonction1(self):
            self.bouton0.place(x=150,y=150)
            self.fenetre.mainloop()
            
            
        def fonction2(self):
            self.bouton1.place(x=150,y=150)
            self.fenetre.mainloop()
            
            
            
    fen = MaClasse()
    fen.fonction1()
    
    


    Si quelqu'un sait ce que j'ai oublié :S

    -
    Edité par FloSRE 23 juillet 2013 à 15:08:40

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      23 juillet 2013 à 15:18:18

      "python m'explique gentiment qu'il ne connait pas d'attribut de ce nom..."

      Merci de donner le message d'origine en anglais, pas de traduction.

      C'est une bonne habitude à prendre ;)

      • Partager sur Facebook
      • Partager sur Twitter
        23 juillet 2013 à 15:54:49

        Oui c'est vrai c'est mieux xD

        AttributeError: 'MaClasse' object has no attribute 'bouton0'

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          23 juillet 2013 à 16:26:22

          "Merci de donner le message d'origine"

          Tout le message, toutes les lignes, tout quoi...

          En tout cas cette ligne ne peut pas fonctionner

          self.bouton0 = tkinter.Button(self.fenetre,text="Cliquez ici",command = MaClasse.fonction2(self) ,width=25,height=1)

          Mieux serait

          self.bouton0 = tkinter.Button(self.fenetre, text="Cliquez ici", width=25,height=1, command = self.fonction2)

          Pourquoi il y a deux mainloop ?

          -
          Edité par Anonyme 23 juillet 2013 à 16:30:49

          • Partager sur Facebook
          • Partager sur Twitter
            23 juillet 2013 à 16:58:08

            Nickel ça marche !

            Les 2 mainloop c'est parce que dans la théorie chaque fonction représente une "page" spécifique avec ses widgets.

            Merci !

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              23 juillet 2013 à 17:26:39

              Humm... Ça sent pas bon, tu risques d'avoir des problèmes, regarde du côté de la classe Toplevel, pour créer une nouvelle page.

              • Partager sur Facebook
              • Partager sur Twitter
                23 juillet 2013 à 17:31:36

                Ok je vais jeter un coup d'oeil dans cette direction. Merci pour le renseignement.
                • Partager sur Facebook
                • Partager sur Twitter

                Problème Tkinter/Classes

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown