Partage
  • Partager sur Facebook
  • Partager sur Twitter

BOUTON QUIT

fonctionne en 2.6, pas en 3.2

    27 septembre 2012 à 17:08:15

    Bonjour à tous.

    Je veux émigrer de Python 2.7 à Python3.2 et j'ai in problème de bouton (qui m'en donne!!).
    Voici la partie du code en cause :
    fenetre = Tk()
    cadre = Canvas(fenetre,bg = "dark grey", height = 850, width = 900)
    # Définition de quelques widgets dans cadre qui ne posent pas de problème 
    Button(fenetre, text = "Quitter", command=fenetre.quit).pack(side = "bottom")
    Button(fenetre, text = "Démarrer", command = demarrer).pack()
    Button(fenetre, text = "Arrêter", command = stopper).pack()
    Button(fenetre, text = "Réinitialiser", command = reinitialiser).pack()
    

    Les 4 boutons s'affichent normalement dans les 2 versions, et les 3 derniers exécutent correctement les commandes '"Démarrer", Arrêter" et "Réinitialiser".
    Mais le 1er bouton "Quitter" qui est bien à sa place, envoie le programme dans une profonde méditation en Python3.2 et remplit son rôle en Python2.7
    L'interpréteur ne détecte pas d'erreur. Quelle est la bonne commande?
    Merci.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      28 septembre 2012 à 9:02:24

      Citation : doc tkinter

      Note that if you don't need to keep a reference to a widget, it might be tempting to create and pack it on a single line



      quit_button = Button(fenetre, text = "Quitter", command=fenetre.quit)
      quit_button.pack(side="bottom")
      


      Doc tkinter

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        29 septembre 2012 à 17:49:47

        N'aurais-tu pas oublié destroy() après mainloop() ?

        fenetre.mainloop()
        
        fenetre.destroy()
        


        Si c'est ça, la commande quit ne fait qu'interrompre mainloop(), mais il ne ferme pas la fenêtre et il faut mettre destroy().
        • Partager sur Facebook
        • Partager sur Twitter
          29 septembre 2012 à 22:49:18

          Merci beaucoup, mais il est trop tard ce soir pour appliquer.
          Cependant, il reste le problème : le code fonctionne correctement en python2.6 mais plante en 3.2 lorsque je clique sur le bouton "arrêter". les autres commandes ne posent pas de problème.
          Je remplacerai demain la commande "suit" par "destoy" et je fermerai le sujet.
          Et encore merci.
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            30 septembre 2012 à 11:37:32

            Le destroy n'est pas le problème, j'en suis pratiquement sûr, même si j'ai pas testé, je ne l'ai jamais utilisé dans mes applications.

            Par contre le problème indiqué dans la doc, est un problème récurrent que j'ai déjà rencontré aussi.

            Le fait que ça fonctionne en 2.6, je sais pas, mais en 2.7, il se peut que ton problème soit le même qu'en 3.2

            Bref il faut tester, bonne continuation...
            • Partager sur Facebook
            • Partager sur Twitter

            BOUTON QUIT

            × 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