IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

[Python3.X] Erreur _tkinter.TclError coordinates


Sujet :

Tkinter Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2014
    Messages : 37
    Points : 23
    Points
    23
    Par défaut [Python3.X] Erreur _tkinter.TclError coordinates
    Bonjour,

    Je boss actuellement sur l'ouvrage de Gérard Swinnen, plus particulièrement sur OscilloGraphe, un widget personnalisé.
    Seulement en reproduisant le script ci dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
      #!/usr/bin/env Python
    # -*- coding: utf-8 -*-
     
    from tkinter import *
    from math import sin, pi
     
    class OscilloGraphe(Canvas):
      "Canevas spécialisé, pour dessiner des courbes élongation/temps"
      def __init__(self, boss =None, larg=200, haut=150):
          "Constructeur du graphique : axes et échelle horiz."
          # constructeur du widget parent :
          Canvas.__init__(self)       # appel au constructeur
          self.configure(width=larg, height=haut)          # de la classe parente
          self.larg, self.haut = larg, haut           # mémorisation
          # tracé des axes de référence :
          self.create_line(10, haut/2, larg, haut/2, arrow=LAST)    # axe X
          self.create_line(10, haut-5, 10, 5, arrow=LAST)        # axe Y
          # tracé d'une échelle avec 8 graduations :
          pas = (larg-25)/8.          # intervalles de l'échelle horizontale
          for t in range(1, 9):
            stx = 10 + t*pas        # +10 pour partir de l'origine
          self.create_line(stx, haut/2-4, stx, haut/2+4)
     
      def traceCourbe(self, freq=1, phase=0, ampl=10, coul='red'):
          "tracé d'un graphique élongation/temps sur 1 seconde"
          curve =[]          # liste des coordonnées
          pas = (self.larg-25)/1000.          # l'échelle X correspond à 1 seconde
          for t in range(0,1001,5):           # que l'on divise en 1000 ms.
            e = ampl*sin(2*pi*freq*t/1000 - phase)
          x = 10 + t*pas
          y = self.haut/2 - e*self.haut/25
          curve.append((x,y))
          n = self.create_line(curve, fill=coul, smooth=1)
          return n
     
    ##### Code pour tester la classe : #####
     
    if __name__ == '__main__':
     
      root = Tk()
      gra = OscilloGraphe(root, 250, 180)
      gra.pack()
      gra.configure(bg ='ivory', bd =2, relief=SUNKEN)
      gra.traceCourbe(2, 1.2, 10, 'purple')
      root.mainloop()
    J'ai ceci comme erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      Traceback (most recent call last):
      File "oscillo.py", line 44, in <module>
        gra.traceCourbe(2, 1.2, 10, 'purple')
      File "oscillo.py", line 33, in traceCourbe
        n = self.create_line(curve, fill=coul, smooth=1)
      File "/usr/lib/python3.4/tkinter/__init__.py", line 2338, in create_line
        return self._create('line', args, kw)
      File "/usr/lib/python3.4/tkinter/__init__.py", line 2326, in _create
        *(args + self._options(cnf, kw))))
    _tkinter.TclError: wrong # coordinates: expected at least 4, got 2
    J'aimerais avoir votre avis sur le sujet, svp

    Merci beaucoup !

  2. #2
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Citation Envoyé par Arcas64 Voir le message
    J'aimerais avoir votre avis sur le sujet, svp
    Bonjour,
    C'est juste une petite erreur d'indentation:
    Les lignes 30, 31 et 32 doivent aussi être indentées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    from tkinter import *
    from math import sin, pi
     
    class OscilloGraphe(Canvas):
      "Canevas spécialisé, pour dessiner des courbes élongation/temps"
      def __init__(self, boss =None, larg=200, haut=150):
          "Constructeur du graphique : axes et échelle horiz."
          # constructeur du widget parent :
          Canvas.__init__(self)       # appel au constructeur
          self.configure(width=larg, height=haut)          # de la classe parente
          self.larg, self.haut = larg, haut           # mémorisation
          # tracé des axes de référence :
          self.create_line(10, haut/2, larg, haut/2, arrow=LAST)    # axe X
          self.create_line(10, haut-5, 10, 5, arrow=LAST)        # axe Y
          # tracé d'une échelle avec 8 graduations :
          pas = (larg-25)/8.          # intervalles de l'échelle horizontale
          for t in range(1, 9):
            stx = 10 + t*pas        # +10 pour partir de l'origine
          self.create_line(stx, haut/2-4, stx, haut/2+4)
     
      def traceCourbe(self, freq=1, phase=0, ampl=10, coul='red'):
          "tracé d'un graphique élongation/temps sur 1 seconde"
          curve =[]          # liste des coordonnées
          pas = (self.larg-25)/1000.          # l'échelle X correspond à 1 seconde
          for t in range(0,1001,5):           # que l'on divise en 1000 ms.
            e = ampl*sin(2*pi*freq*t/1000 - phase)
            x = 10 + t*pas
            y = self.haut/2 - e*self.haut/25
            curve.append((x,y))
          n = self.create_line(curve, fill=coul, smooth=1)
          return n
     
    ##### Code pour tester la classe : #####
     
    if __name__ == '__main__':
     
      root = Tk()
      gra = OscilloGraphe(root, 250, 180)
      gra.pack()
      gra.configure(bg ='ivory', bd =2, relief=SUNKEN)
      gra.traceCourbe(2, 1.2, 10, 'purple')
      root.mainloop()
    Clodion

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2014
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    Merci pour ta réponse Clodion, j'ai pu rectifier le soucis.

    Bon par contre j'ai quelques éléments encore qui posent problème concernant le modulo qu'il faut mettre en place selon le pdf de Gérard Swinnen. J'ai reproduit les scripts comme indiqué, et il faut que j'expérimente la classe que j'ai construit, voir ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    #!/usr/bin/env Python
    # -*- coding: utf-8 -*-
     
    from tkinter import *
    from math import sin, pi
     
    class OscilloGraphe(Canvas):
      "Canevas spécialisé, pour dessiner des courbes élongation/temps"
      def __init__(self, boss =None, larg=200, haut=150):
          "Constructeur du graphique : axes et échelle horiz."
          # constructeur du widget parent :
          Canvas.__init__(self)       # appel au constructeur
          self.configure(width=larg, height=haut)          # de la classe parente
          self.larg, self.haut = larg, haut           # mémorisation
          # tracé des axes de référence :
          self.create_line(10, haut/2, larg, haut/2, arrow=LAST)    # axe X
          self.create_line(10, haut-5, 10, 5, arrow=LAST)        # axe Y
          # tracé d'une échelle avec 8 graduations :
          pas = (larg-25)/8.          # intervalles de l'échelle horizontale
          for t in range(1, 9):
            stx = 10 + t*pas        # +10 pour partir de l'origine
          self.create_line(stx, haut/2-4, stx, haut/2+4)
     
      def traceCourbe(self, freq=1, phase=0, ampl=10, coul='red'):
          "tracé d'un graphique élongation/temps sur 1 seconde"
          curve =[]          # liste des coordonnées
          pas = (self.larg-25)/1000.          # l'échelle X correspond à 1 seconde
          for t in range(0,1001,5):           # que l'on divise en 1000 ms.
            e = ampl*sin(2*pi*freq*t/1000 - phase)
            x = 10 + t*pas
            y = self.haut/2 - e*self.haut/25
            curve.append((x,y))
          n = self.create_line(curve, fill=coul, smooth=1)
          return n
     
    ##### Code pour tester la classe : #####
     
    if __name__ == '__main__':
     
      root = Tk()
      gra = OscilloGraphe(root, 250, 180)
      gra.pack()
      gra.configure(bg ='ivory', bd =2, relief=SUNKEN)
      gra.traceCourbe(2, 1.2, 10, 'purple')
      root.mainloop()

    Je dois lancé dans le terminal python3 en mode interactif les commandes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> from oscillo import *
    >>> g1 = OscilloGraphe()
    >>> g1.pack()
    Et apparaît ceci pour moi :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> from oscillo import *
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ImportError: No module named 'oscillo'

    J'ai relus l'ensemble de l'énoncé du pdf, mais je vois d'où vient le problème. Le module n'as pas était créer apparemment ...

Discussions similaires

  1. aide sur une erreur de syntaxe python3.2 sur linux
    Par labelgikaine dans le forum Général Python
    Réponses: 13
    Dernier message: 20/11/2013, 01h11
  2. Réponses: 3
    Dernier message: 29/07/2012, 21h03
  3. Réponses: 2
    Dernier message: 27/05/2002, 19h46
  4. erreur IDL:omg.org/CORBA/MARSHAL:1.0
    Par Pinggui dans le forum CORBA
    Réponses: 3
    Dernier message: 13/05/2002, 15h05
  5. [Kylix] Erreur objet
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo