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 !