[EDIT] Changement d'intitulé.



Bonsoir,
J'ai un petit souci avec le programme suivant.
En effet, je ne m'attends pas à ce que les fonctions "plot_carre" et "plot_triangle" se lancent à l'ouverture.
J'aurais souhaité que cela se fasse en cliquant sur les boutons correspondant. Que fais-je mal ?
Merci à vous.

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import numpy as np
import tkinter as Tk
import matplotlib
matplotlib.use('TkAgg')
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figure
 
Umax=1
omega=1
nb_val=1000
t=np.linspace(0,4*np.pi/omega,nb_val)
 
def carre(nb_harm):
    tmp_carre=np.zeros(nb_val)
    for n in range(0,nb_harm):
        tmp_carre=tmp_carre+np.sin((2*n+1)*omega*t)/(2 *n +1)
    scale_carre=[4*Umax/np.pi]*nb_val
    tmp_carre=scale_carre*tmp_carre
    return tmp_carre
 
def triangle(nb_harm):
    tmp_triangle=np.zeros(nb_val)
    for n in range(0,nb_harm):
        tmp_triangle=tmp_triangle+np.cos((2*n+1)*omega*t)/((2 *n +1)*(2*n+1))
    scale_triangle=[4*Umax/np.pi]*nb_val
    tmp_triangle=scale_triangle*tmp_triangle
    return tmp_triangle
 
root = Tk.Tk()
root.wm_title("Recomposition de Fourier")
 
f = Figure(figsize=(8,4), dpi=100)# a tk.DrawingArea
a = f.add_subplot(111)
 
def plot_carre(nb_harm):
    a.plot(carre(nb_harm))
def plot_triangle(nb_harm):
    a.plot(triangle(nb_harm))
def _quit():
    root.quit()
    root.destroy()
 
canvas = FigureCanvasTkAgg(f, master=root)
canvas.show()
canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
 
toolbar = NavigationToolbar2TkAgg(canvas, root)
toolbar.update()
canvas._tkcanvas.pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
 
n=2
button=Tk.Button(master=root,text='Carré',command=plot_carre(n))
button.pack(side=Tk.LEFT)
button=Tk.Button(master=root,text='Triangle',command=plot_triangle(n))
button.pack(side=Tk.LEFT)
button=Tk.Button(master=root, text='Quit',command=_quit)
button.pack(side=Tk.RIGHT)
 
Tk.mainloop()