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