Partage
  • Partager sur Facebook
  • Partager sur Twitter

Tkinter int object has not attribute 'get'

Sujet résolu
Anonyme
    9 septembre 2014 à 19:04:34

    hello j'ai un code qui comme dit dans le tire me donne une erreur qui dit que j'ai un int. Jusque là ok. Je l'ai créé en global car il a du etre référencé avant assignement (c'etait forcé par le code). Mais lorsque je clique sur la case à cocher :

    1/ ca fait que dalle

    2/je dois le faire une 2eme fois et la ! une erreur, mon int n'a pas de méthode 'get'

    je précise que j'utilise python 3.4.0 et que je fais ceci avec ce code :

    def def_mode():
    	global var_mode
    	var_mode = var_mode.get()
    	if   var_mode == 1: mode_de_jeu = True  #donc il y aura pas de monstres, cochée
    	elif var_mode == 0: mode_de_jeu = False #donc des monstres, mais que la nuit, pas cochée



    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      9 septembre 2014 à 19:33:50

      Oui tu écrases ton objet "case à cocher" par un entier, donc la 1ère fois c'est fonctionnel, puis var_mode devient entier. Quand tu reclick dessus, tu appelles la méthode get sur un entier, d'où l'erreur.

      La solution est de ne pas écraser cette variable.

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        9 septembre 2014 à 20:08:29

        Et je fais comment ? car en cochant, rien ne se fait, la valeur, elle change par contre
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          9 septembre 2014 à 20:15:33

          Difficile de deviner ton code mais je dirais que ta variable globale n'est pas la bonne

          def def_mode():
              global mode_de_jeu
              mode = var_mode.get()
              if mode: mode_de_jeu = True  #donc il y aura pas de monstres, cochée
              else: mode_de_jeu = False #donc des monstres, mais que la nuit, pas cochée

          À prendre avec des pincettes, comme je dis j'essaie de deviner un code que tu ne montres pas.

          P.S Si on peut, on évite l'utilisation du mot clé global



          -
          Edité par Anonyme 9 septembre 2014 à 20:16:51

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            9 septembre 2014 à 20:19:07

            oldProgrammer a écrit:

            P.S Si on peut, on évite l'utilisation du mot clé global

            Je peux pas, sinon erreur d'assignement avant déclaration . . .
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              9 septembre 2014 à 20:21:02

              C'est tout une configuration à revoir depuis le début du programme, maintenant dans la situation actuelle, elle est inévitable, en effet...

              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                9 septembre 2014 à 20:47:51

                merci ca fonctionne ;)
                • Partager sur Facebook
                • Partager sur Twitter
                  9 septembre 2014 à 21:16:36

                  Pour ne pas utiliser globals(), tu peux changer le type de la variable mode_de_jeu:

                  #Tu peux dire que mode_de_jeu est une liste (objet mutable)
                  
                  #Initialisation de la variable
                  mode_de_jeu = [False]
                  
                  def def_mode():
                      if var_mode.get():
                          mode_de_jeu[0] = True
                      else:
                          mode_de_jeu[0] = False

                  Ou encore utiliser la variable tkinter BoolenVar() qui est également un objet muable:

                  mode_de_jeu = tkinter.BooleanVar()
                  mode_de_jeu.set(False)
                  
                  def def_mode():
                      if var_mode.get():
                          mode_de_jeu.set(True)
                      else:
                          mode_de_jeu.set(False)

                  -
                  Edité par Olygrim 9 septembre 2014 à 21:45:14

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Précepte: Le mieux est l'ennemi du bien

                  Tkinter int object has not attribute 'get'

                  × 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