Partage
  • Partager sur Facebook
  • Partager sur Twitter

Objet en Python

    10 octobre 2012 à 23:27:27

    Bonjour j'ai un problème sur mon code à chaque fois que je l'exécute ça me fait ça:
    Exception in Tkinter callback
    Traceback (most recent call last):
    File "C:\Python32\lib\tkinter\__init__.py", line 1399, in __call__
    return self.func(*args)
    TypeError: mouseClick() takes exactly 1 positional argument (2 given)


    voici mon code:
    from tkinter import *
    class Mouseclick(object):
        def __init__(self,master):
            master=Tk()
            cible=Frame(master,width=500,height=400,bg='white')
            self.cible=Label(master,text='click with your mouse')
            cible.bind("<Button-1>",self.mouseClick)
            self.cible.pack()
            cible.pack(expand=10,fill=BOTH)
            
            #self.cible.pack(side =TOP,padx=5,pady=5)
            master.mainloop()
        def mouseClick(event):
            cible.configure(text="clic detected at X=%s,Y=%s"%(event.x,event.y))
    
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      11 octobre 2012 à 6:58:34

      Bah c'est si difficile de lire l'erreur ?
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        11 octobre 2012 à 7:32:30

        Bonjour,

        Il manque des self un peu partout. Une variable sans self dans une méthode est une variable locale qui est détruite à la sortie de cette méthode. Une variable avec self appartient à l'instance de classe et peut être référencée dans l'ensemble de la classe. Donc: cible => self.cible

        Je ne comprends pas l'argument master de __init__: tu le passes en argument et tu l'affectes tout de suite à Tk()??? Ce n'est pas logique. En général, placé à cet endroit, (et on le met plutôt comme "master=None") master représente le "parent" de l'instance de classe, mais il faudrait que la classe hérite d'un objet tkinter et pas seulement de "object".

        Il faut aussi passer self comme 1er argument de mouseClick: def mouseClick(self, event).

        Au delà, il y a longtemps que je n'ai pas travaillé avec tkinter: il faudrait que quelqu'un d'autre réponde.
        • Partager sur Facebook
        • Partager sur Twitter
          11 octobre 2012 à 10:05:42

          Merci mais quand je met self partout ça m'affiche aussi des erreurs
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            11 octobre 2012 à 10:44:38

            Tu vas trop vite: tu veux faire de la programmation graphique, mais il te manque des fondamentaux Python sans lesquels tu vas te planter constamment.

            Pour les fondamentaux, voilà une doc intéressante: http://www.irem.sciences.univ-nantes.f [...] hon_notes.pdf. Il y a l'équivalent pour Python 3.

            Pour tkinter: http://infohost.nmt.edu/tcc/help/pubs/tkinter.pdf

            Avec le 1er doc, regarde comment les classes fonctionnent (structure, héritage, utilisation). Et avec le 2e doc, commence par une fenêtre "mini" et fais-là évoluer progressivement.

            • Partager sur Facebook
            • Partager sur Twitter
              11 octobre 2012 à 14:00:11

              Merci beaucoup c'est ça je viens tout juste de débuté la programmation graphique
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                11 octobre 2012 à 23:22:46

                Citation

                Merci mais quand je met self partout ça m'affiche aussi des erreurs



                Le minimum n'est même pas là, on ne voit pas votre code modifié après l'intervention de tyrtamos.
                • Partager sur Facebook
                • Partager sur Twitter

                Objet en Python

                × 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