Bonjour à tous, je viens vers vous aujourd'hui car j'ai un problème de taille ! (c'est marrant ça...)

Je cherche un afficher un graphique mathplotlib dans une frame tkinter jusque la tout va bien j'y arrive :
Nom : Capture d'écran 2023-09-07 214300.png
Affichages : 237
Taille : 30,4 Ko

Mais le problème est que en ajoutant le graphique, la frame de droite (en rouge) n'as plus la bonne largeur, voici la largeur que je voudrais :
Nom : Capture d'écran 2023-09-07 215209.png
Affichages : 207
Taille : 47,0 Ko

J'ai passé pas mal de temps sur la doc de mathplotlib mais à part définir la taille de la figure en dur dans le code avec figsize je n'ai pas trouvé comment faire... :'(

Voici le code de ma view :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 tkinter as tk
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
 
 
class StatsFrame(tk.Frame):
    def __init__(self, parent):
        super().__init__(parent)
        self.controller = None
        self.number_of_stat_row = 7
        self.row_weight = 3
 
        self.grid_config()
 
    def set_controller(self, controller):
        self.controller = controller
        self.create_widgets()
 
    def grid_config(self):
        self.configure(background="red", padx=10, pady=10)
        self.grid(row=0, column=1, sticky=tk.N + tk.S + tk.E + tk.W)  # position de la frame dans son parent
        self.grid_rowconfigure(0, weight=1)  # title row
        self.grid_rowconfigure(8, weight=1)  # graph row
        self.configure_rows()
 
    def configure_rows(self):
        for i in range(self.number_of_stat_row):
            self.grid_rowconfigure(i + 1, weight=self.row_weight)
        self.grid_columnconfigure(0, weight=1)
 
    def create_widgets(self):
        self.create_title_row()
        self.create_label()
        # self.create_graph()
 
    def create_title_row(self):
        title_label = tk.Label(self, text="STATISTIQUE")
        title_label.grid(row=0)
 
    def create_label(self):
        labels_data = [
            ("Montant deposé", self.controller.get_montant_depose(), "€", 1),
            ("Montant investi", self.controller.get_montant_investi(), "€", 2),
            ("Taux moyen", self.controller.get_taux_moyen(), "%", 3),
            ("Interet net total", self.controller.get_interet_totaux(), "€", 4),
            ("Interet mensuel moyen", self.controller.get_average_monthly_interest(), "€", 5),
            ("Durée moyenne", self.controller.get_average_duration(), "mois", 6),
            ("Exposition max", self.controller.get_max_exposure(), "%", 7)
        ]
 
        for label_text, value, unit, row in labels_data:
            label = tk.Label(self, text=f"{label_text} : {round(value, 2)}{unit}")
            label.grid(row=row, sticky="NESW", pady=5)
 
    def create_graph(self):
        fig, ax = plt.subplots(facecolor='lightskyblue', dpi=100)
 
        x = [1, 2, 3, 4]
        ax.pie(x, radius=3, center=(4, 4), wedgeprops={"linewidth": 1, "edgecolor": "white"}, frame=True)
        canvas = FigureCanvasTkAgg(fig, self)
        canvas.draw()
        canvas.get_tk_widget().grid(row=8)
Si vous avez une idée, une solution, ou même juste un lien avec RTFD comme message ça me va !

Merci d'avance !
MagretsDeCanard