Bonjours,

Tout d'abord, désolé de reposter ce message, mais j'ai vraiment besoin d'une aide rapide...


Mon problème peut paraître simple au premier abord, mais je n'ai pas trouvé comment faire, même après avoir disséqué Tkinter.py.

Je désire faire apparaitre une transformée Fourier ( pour ceux qui connaisse ) ou bien un Canvas ( pour les autre ) sur une fenêtre indépendante, lorsque j'appuie sur un boutton.
Déclaration de la fenêtre principale (au cas ou cela ai une importance)
Code:


Puis dans une classe héritée de la classe Frame, packé sur la fenêtre root

Code:
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
class initButtonsAnalyse(Frame):
   '''Création des bouttons qui jouent et enregistrent'''
   def __init__(self, snd, main):
      Frame.__init__(self)
      self.main = main
      self.sound = snd
           self.pack()
                # [...]
                Tkinter.Button(self, text='''Fourier géant''', command = self.gigantF).pack(side = 'left')
 
   def gigantF(self):
 
      #Configuration de la fenêtre du fourier
      self.fourier = Tk()
 
      #appel du fourier géant
      self.fourierGeant = gigantFourier( self.sound, self.main )
 
      #pack le fourier géant
      self.fourierGeant.grid(row= 0, column = 0)


Voici le gigantFourier en question, lui aussi hérité de la classe Frame ...

Code:

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
class gigantFourier (Frame):
   '''Création du grand graphe Fourier indépendant'''
   def __init__(self, snd, parent=None, sound=None, *args, **kw):
 
      #Configuration de l'héritage
      Frame.__init__(self)
 
      #Initialisation des variables
      self.snd = snd
 
      #Création du Canvas avec Fourier
      self.canvas = SnackCanvas(height=600, width=800)
      self.canvas.create_section(0, 0, sound=self.snd, start=6000, end=6100, height=600, width=800)
 
      #Curseurs
      self.message = 'Cliquez sur le graphe'
 
      #initialisation du scruteur d'évenement
      self.canvas.bind('<Button 1 >', self.pointeur )
 
      #Initialisation des lignes et du texte
      self.line2 = self.canvas.create_line(0,0,0,0,fill = 'green')
      self.line1 = self.canvas.create_line(0,0,0,0, fill = 'blue')
      self.text = self.canvas.create_text( ( 400 , 10 ), text = self.message)
 
 
                #Cette ligne pose problème !
      self.canvas.grid(row = 0, column = 0)
 
   def pointeur(self, event):
      self.message = '''Fréquence : ''' + str(event.x) + '  Hz Amplitude : ' + str(event.y) + '  UA'
      self.canvas.coords(self.line1, event.x,25, event.x, 600)
      self.canvas.coords(self.line2, 0,event.y,800,event.y)
 
      self.rect = self.canvas.create_rectangle(200,1,600,20,fill='white')
      self.text = self.canvas.create_text( ( 400 , 10 ), text = self.message)

Or, cette frame se pack sur la fenêtre n°1, au lieu de la nouvelle fenetre créée spécialement pour lui. C'est la ligne que j'ai marqué comme posant problème qui en est responsable. Mais sans elle, la frame n'apparait tout bonnement pas !

Comment faire ??

Merci d'avance

cyrpaut

P.S.: Dans GigantFourier, certaine commandes peuvent vous paraitre obscure... En fait elles appartiennent au module Snack, qui me perment de lire les sons et de générer des graphes. C'est un module génial our les musiciens/programmeurs !