Bonjour,

Je récupère des données que j'affiche avec un Treeview et tout fonctionne bien.
J'aimerais changer le fond de certaines lignes en fonction d'un niveau d'alerte et la pas d'erreur mais pas de résultat non plus.
Je vous met mon code.

Merci de votre aide

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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
 
import tkinter as tk
from tkinter import ttk
import modules.creation_etat_mopieur
 
# Définition de la fenêtre de l'application
root = tk.Tk()
 
# Lecture du fichier de configuration
configuration_mopieur = modules.lecture_configuration_json.lecture_configuration()
 
 
def application():
    """
    Fonction principale de l'application de gestion.
    Cette fonction crée et gère l'interface utilisateur de l'application.
 
    L'application effectue les étapes suivantes :
    1. Initialise les variables et les paramètres de la fenêtre principale.
    2. Affiche un message d'attente pendant la récupération des informations.
    3. Récupère les informations sur le parc de "mopieurs".
    4. Met à jour l'interface en fonction des informations récupérées.
    """
 
    # Initialisation des variables de la fenêtre
    root.title("Gestion des mopieurs")
    root.geometry("300x80")
    root.resizable(False, False)
    root.configure(bg="#33CAFF")
 
    # Affichage de l'affichage d'attenete
    attente_lbl = tk.Label(root,
                           text="Lecture en cours",
                           bg=root.cget("bg"),
                           font=("Arial", 20, "bold"))
    attente_lbl.pack(fill=tk.BOTH, expand=True, padx=20, pady=10)
 
    # Affichage de la version
    version = configuration_mopieur["version"]
    version_lbl = tk.Label(root,
                           text="PACA 2024 - " + version,
                           bg=root.cget("bg"),
                           font=("Arial", 8))
    version_lbl.pack()
 
    # Mise à jour de la fenêtre
    root.update()
 
    # Appel de la fonction permettant de récupérer les infos sur le parc
    parc = modules.creation_etat_mopieur.generer_parc_mopieur(configuration_mopieur)
 
    # Suppresion des labels
    attente_lbl.destroy()
    version_lbl.destroy()
 
    # Calcul des dimensions de la nouvelle fenêtre en fn du nombre de machines
    nouvelle_hauteur = (len(parc) + 1) * 22
    root.geometry(f"800x{nouvelle_hauteur}")
 
    # Affichage des résultats
    affichage_table(parc)
 
    root.mainloop()
 
 
def evaluer_niveau_alerte_consommable(donnees):
    """
    Évalue le niveau des consommables.
 
    Cette fonction prend en compte les niveaux des consommables afin de prévenir l'utilisateur.
 
    Args:
        donnees (list): Liste des valeurs des consommables.
 
    Returns:
        str: Niveau d'alerte en fonction de la plus petite valeur dans les données.
             Peut être "alerte", "avertissement" ou "normal".
    """
 
    alerte = min(donnees)
 
    if alerte <= 10:
        return "alerte"
    elif alerte <= 20:
        return "avertissement"
    else:
        return "normal"
 
 
def affichage_table(parc):
    """
    Cette fonction prend en entrée une liste représentant le parc de mopieurs avec leurs données,
    puis crée et affiche un tableau (TreeView) dans une fenêtre tkinter pour visualiser ces données.
 
    Args:
        parc (list): Liste contenant les informations sur le parc de "mopieurs".
                     Chaque élément de la liste représente un "mopieur" avec ses données.
 
    """
 
    # Créer un Treeview pour afficher les données sous forme de tableau
 
    tree = ttk.Treeview(root, show="headings")
 
    tree.tag_configure("normal", background="white")
    tree.tag_configure("avertissement", background="orange")
    tree.tag_configure("alerte", background="red")
 
    # Définir les colonnes
    entete_colonne = ["Emplacement", "Mopieur", "s/n", "NB", "Clr",
                      "Noir", "Usagé", "Cyan", "Magenta", "Jaune"]
    largeur_colonne = [60, 100, 40, 20, 20, 20, 20, 20, 20, 20]
    alignement_colonne = ["w", "w", "w", "center", "center", "center",
                          "center", "center", "center", "center"]
 
    nombre_colones = len(entete_colonne)
    tree["columns"] = [str(i) for i in range(nombre_colones + 1)]
 
    for index, (nom, largeur, alignement) in enumerate(zip(entete_colonne,
                                                           largeur_colonne,
                                                           alignement_colonne)):
        tree.heading(str(index), text=nom, anchor="c")
        tree.column(str(index), width=largeur, anchor=alignement)
 
    # Ajouter les données au Treeview
    for item in parc:
        etat = evaluer_niveau_alerte_consommable(item[5:])
        tree.insert("", "end", values=item, tags=(etat,))
 
    # Afficher le Treeview
    tree.pack(expand=True, fill=tk.BOTH)