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 tkinter as tk
from random import randint
from collections import deque
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
from matplotlib.animation import FuncAnimation
from matplotlib import style
SIZE = 10
def ADC(dt):
#vals= adc.read_adc(1, gain=GAIN) #Lecture ADC, test sans nbr aléatoire
#valeurs.appendleft(vals)
valeurs.appendleft(randint(1, 100)) #Géneration nombres aléatoire, test sans ADC
moyenne = sum(valeurs) / len(valeurs)
listbox.delete(0, tk.END)
for val in valeurs:
listbox.insert(tk.END, val)
moyenne_texte.set("Moyenne : {:.2f}".format(moyenne))
line.set_data(range(SIZE), valeurs)
app = tk.Tk()
app.wm_title("Lecture de valeurs en continu")
valeurs = deque([0] * SIZE, maxlen=SIZE)
moyenne_texte = tk.StringVar()
moyenne_texte.set("Moyenne :")
moyenne_label = tk.Label(app, textvariable=moyenne_texte, font=('', 16),
fg="sea green")
moyenne_label.grid(row=0, column=0, padx=5, pady=5)
listbox = tk.Listbox(app)
listbox.grid(row=1, column=0, sticky=tk.N+tk.EW, padx=5, pady=5)
style.use("ggplot")
fig = Figure(figsize=(8, 5), dpi=96)
ax = fig.add_subplot(111)
ax.set_xlim(0, SIZE)
ax.set_ylim(0, 400)
ax.set_xlabel("Temps (s)")
ax.set_ylabel("Valeur (points)")
line, = ax.plot(range(len(valeurs)), valeurs, 'b-o')
fig.set_tight_layout(True)
canvas = FigureCanvasTkAgg(fig, master=app)
## canvas.show()
canvas.get_tk_widget().grid(row=0, column=1, rowspan=2, sticky=tk.NSEW)
app.grid_columnconfigure(0, weight=1)
app.grid_columnconfigure(1, weight=1)
app.grid_rowconfigure(1, weight=1)
anim = FuncAnimation(fig, ADC, interval=500)
app.mainloop() |
Partager