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 60 61 62 63
| 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=500
t=np.linspace(0,4*np.pi/omega,nb_val)
def carre(nb_harm):
nb_harm=int(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
root = Tk.Tk()
root.wm_title("Recomposition de Fourier")
def initialisation():
global f, a
f = Figure(figsize=(6,3), dpi=100)
f.clf()
a = f.add_subplot(111)
def raffraichissement():
canvas = FigureCanvasTkAgg(f, master=root)
canvas.draw()
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)
def plot_carre(nb_harm):
initialisation()
a.plot(carre(nb_harm))
raffraichissement()
def quitter():
root.quit()
root.destroy()
harmo=Tk.Label(root, text="Harmoniques")
harmo.pack(side=Tk.LEFT)
val_harm = Tk.IntVar() # On definit val_harm
val_harm.set(1) # On donne la valeur que prendra le curseur au départ
# Création d'un widget Curseur
echelle_harm = Tk.Scale(root,length=200, orient=Tk.HORIZONTAL, troughcolor ='LightYellow2', \
sliderlength =20, showvalue=1,from_=1,to=5, resolution=1, tickinterval=2, \
command=lambda val_harm=0: plot_carre(val_harm)) # width=10
echelle_harm.set(0),
echelle_harm.pack(side=Tk.LEFT)
button=Tk.Button(master=root, text='Quit',command=quitter)
button.pack(side=Tk.RIGHT)
Tk.mainloop() |
Partager