avec le programme ci-joint, j'ai le message d'erreur: module 'matplotlib.pyplot' has no attribute 'set_canvas'
Je voudrais inserer le graphique matplotlib crée dans le canvas crée et malheureusement, je n''y arrive pas. Merci pour votre aide
Bonne soirée
import sqlite3
import tkinter as tk
import tkinter.ttk as ttk
from matplotlib.backends.backend_tkagg import FigureCanvasTk
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
defouvrir_fichier():# À compléterpassdefenregistrer_fichier():# À compléterpassdefaide():# À compléterpassdefannuler():# À compléterpassdefretablir():# À compléterpass# Création de la fenêtre principale
window = tk.Tk()
window.tk.call("source","azure.tcl")
window.tk.call("set_theme","light")# Titre de la fenêtre
window.title("Ma fenêtre Tkinter")# Taille de la fenêtre
window.geometry("800x500")# Création de l'tab principal
tabs = ttk.Notebook(window)# Création des tabs
tab1 = tk.Frame(tabs, width=780, height=400, bg="grey")
tab2 = tk.Frame(tabs, width=780, height=400, bg="grey")
tab3 = tk.Frame(tabs, width=780, height=400, bg="grey")
tab4 = tk.Frame(tabs, width=780, height=400, bg="grey")
tab5 = tk.Frame(tabs, width=780, height=400, bg="grey")
tab6 = tk.Frame(tabs, width=780, height=400, bg="grey")
tab7 = tk.Frame(tabs, width=780, height=400, bg="grey")
tab8 = tk.Frame(tabs, width=780, height=400, bg="grey")# Ajout des tabs à la tab principal
tabs.add(tab1, text="tab 1")
tabs.add(tab2, text="tab 2")
tabs.add(tab3, text="tab 3")
tabs.add(tab4, text="tab 4")
tabs.add(tab5, text="tab 5")
tabs.add(tab6, text="tab 6")
tabs.add(tab7, text="tab 7")
tabs.add(tab8, text="tab 8")# Modification de la taille de la police des titres des tabs
style = ttk.Style(tabs)
style.configure("light.TNotebook", font=("Arial",12))# Positionnement de la tab principal
tabs.place(x=10, y=10)# call a graph from Chaudiere.py# création / connection à la base de données Chaudiere
connection = sqlite3.connect('Chaudiere.db')# creation et connection à la base de données
connection.cursor()# lire les données de la table 'Temperature'
data_graph_temp_ext = pd.read_sql('SELECT * FROM Temperature', connection)# Convertit la colonne 'Date_heure' en un objet 'datetime'
data_graph_temp_ext['Date_heure']= pd.to_datetime(data_graph_temp_ext['Date_heure'], format='%d/%m/%Y %H:%M')# Convertit la colonne 'Température' en float
data_graph_temp_ext['Temperature_exterieure']= data_graph_temp_ext['Temperature_exterieure'].astype(
float).astype(
float)# Spécifie la taille de la fenêtre du graphique
plt.figure(figsize=(3,2))# Tracer le graphique de la température extérieure
plt.plot(data_graph_temp_ext['Date_heure'], data_graph_temp_ext['Temperature_exterieure'])# Ajuste les limites de l'axe y et les pas entre les valeurs y
plt.ylim(-20,40)
plt.yticks(np.arange(-20,40,5))# Utilise la liste de labels avec la fonction plt.xticks()
plt.xticks(data_graph_temp_ext['Date_heure'], data_graph_temp_ext['Date_heure'].dt.strftime('%d/%m/%Y %H:%M'),
rotation=45)# augmente l'espace entre le label x et la fin de la fenêtre
plt.subplots_adjust(bottom=0.2)# Crée un titre pour le graphique
plt.title("Température extérieure")# Modifie la taille des étiquettes de l'axe x
plt.tick_params(axis='x', labelsize=6)# Modifie la taille des étiquettes de l'axe y
plt.tick_params(axis='y', labelsize=6)# Crée une étiquette pour l'axe x
plt.xlabel('Date et Heure')# Crée une étiquette pour l'axe y
plt.ylabel('Température')# Créer un objet FigureCanvasTk pour dessiner la figure dans le canvas.
figure_canvas =FigureCanvasTk(plt, master=tab1)# Empaqueter l'objet FigureCanvasTk et afficher le canevas
figure_canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1)
figure_canvas.place(x=10, y=10)# Création du menu "Fichier"
menu_fichier = tk.Menu(window, tearoff=0)
menu_fichier.add_command(label="Ouvrir", command=ouvrir_fichier)
menu_fichier.add_command(label="Enregistrer", command=enregistrer_fichier)
menu_fichier.add_separator()
menu_fichier.add_command(label="Quitter", command=window.destroy)# Création du menu "Edition"
menu_edition = tk.Menu(window, tearoff=0)
menu_edition.add_command(label="Annuler", command=annuler)
menu_edition.add_command(label="Rétablir", command=retablir)# Création du menu "Aide"
menu_aide = tk.Menu(window, tearoff=0)
menu_aide.add_command(label="Aide", command=aide)defa_propos():# Création de la fenêtre secondaire
window_a_propos = tk.Tk()
window_a_propos.tk.call("source","azure.tcl")
window_a_propos.tk.call("set_theme","light")
window_a_propos.title("À propos de")# Texte à afficher dans la fenêtre
texte ="\nProgramme rédigé par Frédéric Willauer\nVersion 1.00 - Janv 2023\n"
label = tk.Label(window_a_propos, text=texte)# Taille de la fenêtre
window_a_propos.geometry("350x120")
label.pack()# Bouton "Fermer" qui ferme la fenêtre lorsqu'il est cliqué
bouton_fermer = tk.Button(window_a_propos, text="Fermer", command=window_a_propos.destroy)
bouton_fermer.pack()# Création du sous-menu "À propos de"
menu_a_propos = tk.Menu(menu_aide, tearoff=0)
menu_a_propos.add_command(label="À propos de", command=a_propos)# Ajout du sous-menu "À propos de" au menu "Aide"
menu_aide.add_cascade(label="Aide", menu=menu_a_propos)# Ajout du sous-menu A propos de au menu Aide
menu_aide.add_cascade(label="A propos de", menu=menu_a_propos)# Création de la barre de menu
barre_menu = tk.Menu(window)
barre_menu.add_cascade(label="Fichier", menu=menu_fichier)
barre_menu.add_cascade(label="Edition", menu=menu_edition)
barre_menu.add_cascade(label="Aide", menu=menu_aide)
window.config(menu=barre_menu)# Lancement de la boucle Tkinter qui attend les événements utilisateur
window.mainloop()
6 janv. 2023 à 19:00
Merci beaucoup, je vais essayer