Graphique Dynamique tkinter + malplotlib
Bonjour,
Actuellement en cours de développement d'un script pour récupérer des données via une commande SSH + script en local, j'aimerai faire l'affichage des informations (Numérique) sur un graphique en mode dynamique avec rafraîchissement auto.
Déja fonctionnelle :
- Connexion ssh + mise ne vairable des informations .
- Affichage des données après scan via regex pour centrer les informations utiles.
Proposition :
- Test avec Matplotlib pour faire un affichage dynamique mais le graphique n'évolue pas.
- Test avec sauvegarde du graphique en png puis lecture des image, mais idem pas d'affichage. L'affichage évolutif est possible lorsque j'ouvre une image sur l'explorateur.
Code d'ouverture :
Code:
1 2 3 4 5 6
| def start(ip, cmd):
proc = Popen(
TEMPLATE.format(ip, ip, cmd),
stdout=PIPE, stderr=STDOUT, text=True, shell=True,
)
return proc |
Code de récupération des informations :
Code:
1 2 3 4
| while 1:
text = test.stdout.readline()[:-1]
reg = re.findall(r"current : (-[0-9].[0-9]+|[0-9].[0-9]+)", text)
if reg : current1.append(reg[0]) |
Code de création d'images :
Code:
1 2 3 4 5 6
|
plt.plot(current1)
plt.savefig(str(directory )+ "/" + str(j) +".png")
j+=1
if j ==10: j =0 |
Affichage :
Code:
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
| directory = Path(__file__).parent
fenetre = Tk()
im = cv2.imread(str(directory )+ "/1.png")
h,w,c = im.shape
x = h*1.33
y = w*0.75
width = fenetre.winfo_screenwidth()
height = fenetre.winfo_screenheight()
#fenetre.configure(width=width//2, height=height//2)
fenetre.configure(width=x, height=y)
canvas = Canvas(fenetre, width=x, height=y)
i = 0
j = 0
while TRUE:
photo = PhotoImage(file=str(directory )+ "/" + str(j) +".png")
canvas.create_image(0, 0,anchor = NW, image=photo)
j +=1
if j ==10: j=0
canvas.pack()
fenetre.mainloop() |
Questions :
- Est ce que Matplot lib est bien adapté pour faire cela ?
- Existe-t-il une libriarie plus adaptée?
- N'étant pas expert en python, il est fort probable que ma démarche pour réaliser cela ne soit plus la plus optimal, comment puis-je corriger cela?
D'avance merci.