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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part self.root = Tk()
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 !
Partager