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) |
Partager