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 64 65 66
|
#!/usr/bin/python
# -*- coding: iso-8859-1 -*-
import tkinter as Tkinter
import math
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
matplotlib.use('TkAgg')
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
class simpleapp_tk(Tkinter.Tk):
def __init__(self,parent):
Tkinter.Tk.__init__(self,parent)
self.parent = parent
self.initialize()
def initialize(self):
self.grid()
fig3 = plt.figure(3)
entry = Tkinter.Entry(self) # Pour placer sa nouvelle fréquence
canvas = FigureCanvasTkAgg(fig3, master=self)
plot_widget = canvas.get_tk_widget()
plt.ion()
t = np.arange(0, 100, 0.001) # entre 0 et 20 ms
frequence = 50 # 50 Hz par défaut
s = np.sin(2*np.pi*frequence*(t/1000)) # valeur de tensions par défaut pour 50 Hz
plt.plot(t, s) # tracé du signal
self.entry = Tkinter.Entry(self)
self.entry.grid(column=0,row=0,sticky='EW')
button = Tkinter.Button(self,text=u"Click me !")
button.grid(column=1,row=0)
label = Tkinter.Label(self,
anchor="w",fg="white",bg="blue")
label.grid(column=0,row=1,columnspan=2,sticky='EW')
if entry.get():
plt.clf()
frequence = float(entry.get()) # Récupération de la fréquence
s = np.sin(2*np.pi*frequence*(t/1000)) # Recalcule de la tension instantanée pour chaque valeur de temps
plt.plot(t, s)
fig3.canvas.draw() # Mise à jour du tracé
if __name__ == "__main__":
app = simpleapp_tk(None)
app.title('my application')
fig3 = plt.figure(3)
canvas = FigureCanvasTkAgg(fig3, master=self)
plot_widget = canvas.get_tk_widget()
plot_widget.grid(row=0, column=0)
champ_freq=Tkinter.Label(self,text="\nFrequence\n")
champ_freq.pack()
Tkinter.Button(self,text="Update",command=initialize).grid(row=1, column=0)
entry.grid(row=2, column=0)
app.mainloop() |
Partager