#**************************** # Gestion d'equipe ** # "Gest-Equipe" ** # Version 1.2 ** # (c) B.PERRNELLE 2024 ** # *************************** import tkinter as tk from tkinter import messagebox import csv from PIL import Image, ImageTk from tkinter import ttk root = tk.Tk() root.title("Visualisation") root.attributes('-fullscreen', True) root.configure(bg='blue') def rechercher_fiche(): recherche = entry_recherche.get() resultats = [] file_path = 'c:\\Users\\bpernelle\\OneDrive - SOS OXYGENE\\Bureau\\Gest_Equipe_Final1\\fiches.csv' if recherche: with open(file_path, 'r') as file: reader = csv.reader(file) for row in reader: if recherche in row: resultats.append(row) if resultats: for r in resultats: resultats_str = ( f"Nom: {r[0].center(10)} Prénom: {r[1].center(10)} Date de naissance: {r[2].center(10)} \t\t\t No Interne SOS: {r[3].center(20)}\n" f"\n\n\n" f"Date d'entrée: {r[4].center(10)} Coefficient: {r[5].center(10)} Poste: {r[6].center(10)}\t\t\t Date du dernier entretien PRO: {r[7].center(20)}\n" f"\n\n" f"Observation: {r[8]}\n" f"\n\n" f"Adresse: {r[9].center(10)} \t\t\tComplement d'adresse: {r[10].center(10)} \t\t\t Code postal: {r[11].center(10)} ville: {r[12].center(20)}\n" f"\n\n" f"Date de Vaidation O2: {r[13].center(10)}\t\t\t Date Examen EPSAD: {r[14].center(20)}\n" f"\n\n" f"Telephone PERSO: {r[15].center(10)} \t\t\tContact d'urgence: {r[16].center(20)}\n" f"\n\n" f"Mail PERSO: {r[17]}\n" f"\n\n" f"Mail PRO: {r[18]}\n" f"\n\n" f"Ligne Direct: {r[19]}\n" f"\n\n" f"Telephone PRO: {r[20].center(10)} \t\t\tNo de serie du telephone: {r[21].center(10)} \t\t\tCode PUCK: {r[22].center(10)} \t\t\tSupport Telephone: {r[23].center(10)}\t\t\t Chargeur: {r[24].center(10)} \t\t\tCoque de Protection: {r[25].center(20)}\n" f"\n\n\n" f"No Carte CPE: {r[26].center(10)} Code PUK CPE: {r[27].center(10)} No Lecteur CPE: {r[28].center(20)}\n" f"\n\n\n" f"No BIP Télépéage: {r[29].center(10)} \t\t\tNo Carte Carburant: {r[30].center(10)} \t\t\tCode Carte Carburant: {r[31].center(20)}\n" f"\n\n\n" f"No Manomètre PPC: {r[32].center(10)} \t\t\tNo Série Manomètre PPC: {r[33].center(10)} \t\t\t No Manomètre O2: {r[34].center(10)} \t\t\tDate Derniere Revision Mano O2: {r[35].center(20)}\n" f"\n\n" f"No Analyseur O2: {r[36].center(10)} \t\t\tNo Série Analyseur O2: {r[37].center(10)} \t\t\t Date Derniere Revision Mano O2: {r[38].center(10)} \t\t\tNo Serie Oxymètre: {r[39].center(20)}\n" f"\n\n" f"Stylo Débit-Litre: {r[40].center(10)}\t\t\t Module PHILIPS: {r[41].center(10)} \t\t\tModule RESMED: {r[42].center(20)}\n" f"\n\n" f"Clef Agence: {r[43].center(21)}\t\t\tNo Clef Café: {r[44].center(10)} \t\t\tNo BIP Portail: {r[45].center(10)} \t\t\tNo BIP Alarme Agence: {r[46].center(20)}\n" f"\n\n\n\n" f"Taille Polo / Chemise: {r[47].center(10)} \t\t\tQuantité Polo / Chemise: {r[48].center(20)}\n" f"\n\n" f"Taille Pantalon: {r[49].center(10)}\t\t\t Dotation Pantalon: {r[50].center(20)}\n" f"\n\n" f"Taille Parka: {r[51].center(10)} \t\t\tDotation Parka: {r[52].center(20)}\n" f"\n\n" f"Taille Polaire: {r[53].center(10)} \t\t\tDotation Polaire: {r[54].center(20)}\n" f"\n\n" f"Pointure Chaussure: {r[55].center(10)} \t\t\tDotation Chaussure: {r[56].center(20)}\n" f"\n\n\n" f"Nom Ordinateur 1: {r[57].center(10)} \t\t\tType d'Ordinateur: {r[58].center(10)} \t\t\tImprimante: {r[59].center(10)} \t\t\tNo de serie: {r[60].center(10)} \t\t\tSac a dos: {r[61].center(20)}\n" f"\n\n" f"Nom Ordinateur 2: {r[62].center(10)} \t\t\tType d'ordinateur: {r[63].center(10)} \t\t\tAccessoires: {r[64].center(20)}\n" f"\n\n\n\n" f"No Permis de conduire: {r[65].center(10)} \t\t\t Date d'obtention du permis: {r[66].center(10)}\t\t\t Préfecture: {r[67].center(10)}\n" f"\n\n" f"Type Véhicule: {r[68].center(10)} \t\t\tImmatriculation: {r[69].center(10)} \t\t\tKm Véhicule: {r[70].center(10)} \t\t\tKM Pneumatique: {r[71].center(10)} \t\t\t E.P.I (Gants, Lunettes, Casque): {r[72].center(20)}\n" f"\n\n" f"Date de Mise en Service: {r[73].center(10)}\t\t\t Date d'échéance: {r[74].center(10)} \t\t\tContrat: {r[75].center(10)}\t\t\t trousse 1er Secours: {r[76].center(10)} \t\t\tDate Peremption T.S: {r[77].center(20)}\n" f"\n\n" f"No Extincteur Vehicule: {r[78].center(10)} \t\t\tDate derniere Revision: {r[79].center(20)}\n" ) else: messagebox.showinfo("Résultats de la recherche", "Aucune fiche trouvée.") else: messagebox.showwarning("Erreur", "Veuillez rentrer une valeur à rechercher.") def to_uppercase(event): entry_nom_var.set(entry_nom_var.get().upper()) entry_prenom_var.set(entry_prenom_var.get().upper()) entry_observation_var.set(entry_observation_var.get().upper()) entry_adresse_var.set(entry_adresse_var.get().upper()) entry_complement_var.set(entry_complement_var.get().upper()) entry_ville_var.set(entry_ville_var.get().upper()) label_nom = tk.Label( bg="orange", text=" Nom ") label_nom.grid(row=0, column=0, padx=5, pady=5, sticky="E") entry_nom_var = tk.StringVar() entry_nom = tk.Entry( textvariable=entry_nom_var, fg="red") entry_nom.grid(row=0, column=1, padx=5, pady=5, sticky="W") entry_nom.bind("", to_uppercase) label_prenom = tk.Label( bg="orange", text=" Prénom ") label_prenom.grid(row=0, column=2, padx=5, pady=5, sticky="E") entry_prenom_var = tk.StringVar() entry_prenom = tk.Entry( textvariable=entry_prenom_var) entry_prenom.grid(row=0, column=3, padx=5, pady=5, sticky="W") entry_prenom.bind("", to_uppercase) import re # Date de Naissance def validate_date(date): pattern = re.compile(r"^\d{2}/\d{2}/\d{4}$") if pattern.match(date): return True else: messagebox.showerror("Erreur de format", "Le format de la date doit être jj/mm/aaaa.") return False def on_validate(P): return validate_date(P) label_naissance = tk.Label( bg="orange",text=" Date de Naissance * ") label_naissance.grid(row=0, column=4, padx=5, pady=5, sticky="E") vcmd = (root.register(on_validate), '%P') entry_naissance = tk.Entry( validate="focusout", validatecommand=vcmd) entry_naissance.grid(row=0, column=5, padx=5, pady=5, sticky="W") label_interne = tk.Label(bg="orange", text=" No SOS Interne ") # No Interne SOS label_interne.grid(row=0, column=6, padx=5, pady=5, sticky="E") entry_interne = tk.Entry() entry_interne.grid(row=0, column=7, padx=5, pady=5, sticky="W") import re # Date de Naissance def validate_date(date): pattern = re.compile(r"^\d{2}/\d{2}/\d{4}$") if pattern.match(date): return True else: messagebox.showerror("Erreur de format", "Le format de la date doit être jj/mm/aaaa.") return False def on_validate(P): return validate_date(P) label_entree = tk.Label(bg="orange", text=" Date d'Entrée ") # Date d'entree label_entree.grid(row=1, column=0, padx=5, pady=5, sticky="E") vcmd = (root.register(on_validate), '%P') entry_entree = tk.Entry( validate="focusout", validatecommand=vcmd) entry_entree.grid(row=1, column=1, padx=5, pady=5,sticky="w") label_coeff = tk.Label(bg="orange", text=" Coefficient ") # Coeeficient label_coeff.grid(row=1, column=2, padx=5, pady=5, sticky="E") entry_coeff = tk.Entry() entry_coeff.grid(row=1, column=3, padx=5, pady=5, sticky="w") label_emploi = tk.Label(bg="orange",text=" Emploi ") # Emploi label_emploi.grid(row=1, column=4, padx=5, pady=5, sticky="E") entry_emploi = tk.Entry() entry_emploi.grid(row=1, column=5, padx=5, pady=5,sticky="w") import re # Date dernier entretien PRO def validate_date(date): pattern = re.compile(r"^\d{2}/\d{2}/\d{4}$") if pattern.match(date): return True else: messagebox.showerror("Erreur de format", "Le format de la date doit être jj/mm/aaaa.") return False def on_validate(P): return validate_date(P) label_entretien = tk.Label(bg="orange", text=" Date Entretien PRO * ") label_entretien.grid(row=1, column=6, padx=5, pady=5, sticky="E") vcmd = (root.register(on_validate), '%P') entry_entretien = tk.Entry( font=("Helvetica", 10, "bold"), fg="red",width=15,validate="focusout", validatecommand=vcmd) entry_entretien.grid(row=1, column=7, padx=5, pady=5, sticky="W") label_observation = tk.Label( bg="orange", text=" Observations ") label_observation.grid(row=3, column=0, padx=5, pady=5, sticky="E") entry_observation_var = tk.StringVar() entry_observation = tk.Entry( textvariable=entry_observation_var, font=("Helvetica", 10, "bold"), fg="red", width=40) entry_observation.grid(row=3, column=1, padx=5, pady=5, sticky="W") entry_observation.bind("", to_uppercase) label_adresse = tk.Label( bg="orange", text=" Adresse ") label_adresse.grid(row=4, column=0, padx=5, pady=5, sticky="E") entry_adresse_var = tk.StringVar() entry_adresse = tk.Entry( textvariable=entry_adresse_var, width=40) entry_adresse.grid(row=4, column=1, padx=5, pady=5, sticky="W") entry_adresse.bind("", to_uppercase) label_complement = tk.Label( bg="orange", text="Complement d'Adresse ") label_complement.grid(row=4, column=2, padx=5, pady=5, sticky="E") entry_complement_var = tk.StringVar() entry_complement = tk.Entry( textvariable=entry_complement_var, width=30) entry_complement.grid(row=4, column=3, padx=5, pady=5, sticky="W") entry_complement.bind("", to_uppercase) label_code_postal = tk.Label( bg="orange",text=" Code Postal ") # code postal label_code_postal.grid(row=4, column=4, padx=5, pady=5, sticky="E") entry_code_postal =tk.Entry() entry_code_postal.grid(row=4, column=5, padx=5, pady=5, sticky="W") label_ville = tk.Label( bg="orange", text=" Ville ") label_ville.grid(row=4, column=6, padx=5, pady=5, sticky="E") entry_ville_var = tk.StringVar() entry_ville = tk.Entry( textvariable=entry_ville_var, width=30) entry_ville.grid(row=4, column=7, padx=5, pady=5, sticky="W") entry_ville.bind("", to_uppercase) import re # Date Validation O2 def validate_date(date): pattern = re.compile(r"^\d{2}/\d{2}/\d{4}$") if pattern.match(date): return True else: messagebox.showerror("Erreur de format", "Le format de la date doit être jj/mm/aaaa.") return False def on_validate(P): return validate_date(P) label_validation = tk.Label(bg="orange", text=" Date de Validation O2 * ") label_validation.grid(row=6, column=4, padx=5, pady=5, sticky="E") vcmd = (root.register(on_validate), '%P') entry_validation = tk.Entry( font=("Helvetica", 10, "bold"), fg="red",width=15,validate="focusout", validatecommand=vcmd) entry_validation.grid(row=6, column=5, padx=5, pady=5, sticky="W") import re # Date Validattion EPSAD def validate_date(date): pattern = re.compile(r"^\d{2}/\d{2}/\d{4}$") if pattern.match(date): return True else: messagebox.showerror("Erreur de format", "Le format de la date doit être jj/mm/aaaa.") return False def on_validate(P): return validate_date(P) label_epsad = tk.Label( bg="orange",text=" Date Examen EPSAD * ") label_epsad.grid(row=6, column=6, padx=5, pady=5, sticky="E") vcmd = (root.register(on_validate), '%P') entry_epsad = tk.Entry( font=("Helvetica", 10, "bold"), fg="red",width=15,validate="focusout", validatecommand=vcmd) entry_epsad.grid(row=6, column=7, padx=5, pady=5, sticky="W") label_tel_perso = tk.Label( bg="orange",text=" Telephone PERSO ") # tel perso label_tel_perso.grid(row=7, column=0, padx=5, pady=5, sticky="E") entry_tel_perso = tk.Entry( font=("Helvetica", 10, "bold"), fg="red",width=15) entry_tel_perso.grid(row=7, column=1, padx=5, pady=5, sticky="W") label_tel_urgence = tk.Label(bg="orange", text=" Tel Contact Urgence ") # Contact urgence label_tel_urgence.grid(row=7, column=2, padx=5, pady=5, sticky="E") entry_tel_urgence = tk.Entry( font=("Helvetica", 10, "bold"), fg="red",width=15) entry_tel_urgence.grid(row=7, column=3, padx=5, pady=5, sticky="W") label_mail_perso = tk.Label(bg="pink",text=" Mail PERSO ") # mail perso label_mail_perso.grid(row=10, column=0,padx=5, pady=5, sticky="E") entry_mail_perso =tk.Entry(width=28,) entry_mail_perso.grid(row=10, column=1, padx=5, pady=5, sticky="W") label_mail_pro = tk.Label(bg="pink",text=" Mail PRO ") # mail pro label_mail_pro.grid(row=11, column=0, padx=5, pady=5, sticky="E") entry_mail_pro =tk.Entry(width=28) entry_mail_pro.grid(row=11, column=1, padx=5, pady=5,sticky="W") label_ligne_direct = tk.Label(bg="pink",text=" Ligne Directe ") # Ligne Directe label_ligne_direct.grid(row=12, column=0, padx=5, pady=5, sticky="E") entry_ligne_direct =tk.Entry(font=("Helvetica", 10, "bold"), fg="red",width=15) entry_ligne_direct.grid(row=12, column=1, padx=5, pady=5, sticky="W") label_tel_pro = tk.Label(bg="pink",text=" Telephone PRO ") # tel pro label_tel_pro.grid(row=13, column=0, padx=5, pady=5, sticky="E") entry_tel_pro = tk.Entry( font=("Helvetica", 10, "bold"), fg="red",width=15) entry_tel_pro.grid(row=13, column=1, padx=5, pady=7, sticky="W") label_serie = tk.Label(bg="pink", text=" No de serie ") # No serie Telephone label_serie.grid(row=13, column=2 , padx=5, pady=5, sticky="E") entry_serie =tk.Entry(width=18) entry_serie.grid(row=13, column=3, padx=5, pady=5, sticky="W") label_puk = tk.Label(bg="pink", text=" Code PUK ") # Code PUK Telephone label_puk.grid(row=13, column=3 , padx=5, pady=5, sticky="E") entry_puk =tk.Entry(width=10) entry_puk.grid(row=13, column=4, padx=5, pady=5, sticky="W") combobox_support = tk.Label(bg="pink", text=" Support Telephone ") # Support Telephone combobox_support.grid(row=13, column=5 , padx=5, pady=5, sticky="E") options = [ "Oui","Non",""] combobox_support =ttk.Combobox(values=options,width=15) combobox_support.grid(row=13, column=6, padx=5, pady=5, sticky="W") combobox_chargeur = tk.Label(bg="pink", text=" Chargeur / Prise 12V ") # Chargeur / Alim 12V combobox_chargeur.grid(row=13, column=7 , padx=5, pady=5, sticky="E") options = [ "Oui","Non",""] combobox_chargeur =ttk.Combobox(values=options,width=15) combobox_chargeur.grid(row=13, column=8, padx=5, pady=5, sticky="W") combobox_protection = tk.Label(bg="pink",text=" Coque / Film ") # Coqque / Film Protection combobox_protection.grid(row=13, column=9 , padx=5, pady=5, sticky="E") options = [ "Oui","Non",""] combobox_protection =ttk.Combobox(values=options,width=15) combobox_protection.grid(row=13, column=10, padx=5, pady=5, sticky="W") label_carte_cpe = tk.Label(bg="pink", text=" No Carte CPE ") # Carte CPE label_carte_cpe.grid(row=14, column=3, padx=5, pady=5, sticky="E") entry_carte_cpe =tk.Entry() entry_carte_cpe.grid(row=14, column=4, padx=5, pady=5, sticky="W") label_cpe_puk = tk.Label(bg="pink", text=" Code CPE PUK ") # Carte CPE PUK label_cpe_puk.grid(row=14, column=5, padx=5, pady=5, sticky="E") entry_cpe_puk =tk.Entry() entry_cpe_puk.grid(row=14, column=6, padx=5, pady=5, sticky="W") label_lecteur_cpe = tk.Label(bg="pink", text=" No Lecteur CPE ") # No Lecteur CPE label_lecteur_cpe.grid(row=14, column=7, padx=5, pady=5, sticky="E") entry_lecteur_cpe = tk.Entry(width=15) entry_lecteur_cpe.grid(row=14, column=8, padx=5, pady=5, sticky="W") label_peage = tk.Label(bg="pink",text=" No Telepeage ",) # BIP Telepeage label_peage.grid(row=15, column=3, padx=5, pady=5, sticky="E") entry_peage =tk.Entry() entry_peage.grid(row=15, column=4, padx=5, pady=5, sticky="W") label_carburant = tk.Label(bg="pink", text=" Carte Carburant ") # Carte Caburant label_carburant.grid(row=15, column=5, padx=5, pady=5, sticky="E") entry_carburant =tk.Entry() entry_carburant.grid(row=15, column=6, padx=5, pady=5, sticky="W") label_code_carburant = tk.Label( bg="pink",text=" Code Carburant ") # Code Caburant label_code_carburant.grid(row=15, column=7, padx=5, pady=5, sticky="E") entry_code_carburant =tk.Entry(width=15) entry_code_carburant.grid(row=15, column=8, padx=5, pady=5, sticky="W") label_pression = tk.Label( bg="pink",text=" No Mano PPC ") # No MANO PPC label_pression.grid(row=16, column=3, padx=5, pady=5, sticky="E") entry_pression =tk.Entry() entry_pression.grid(row=16, column=4, padx=5, pady=5, sticky="W") label_serie_pression = tk.Label(bg="pink", text=" No serie Mano PPC ") # No Serie MANO PPC label_serie_pression.grid(row=16, column=5, padx=6, pady=5, sticky="E") entry_serie_pression =tk.Entry() entry_serie_pression.grid(row=16, column=6, padx=7, pady=5, sticky="W") label_pressiono2 = tk.Label(bg="pink", text=" No Mano Pression O2 ") # No Serie MANO O2 label_pressiono2.grid(row=16, column=7, padx=6, pady=5, sticky="E") entry_pressiono2=tk.Entry(width=15) entry_pressiono2.grid(row=16, column=8, padx=7, pady=5, sticky="W") import re # Date Revision Mano O2 def validate_date(date): pattern = re.compile(r"^\d{2}/\d{2}/\d{4}$") if pattern.match(date): return True else: messagebox.showerror("Erreur de format", "Le format de la date doit être jj/mm/aaaa.") return False def on_validate(P): return validate_date(P) label_date_rev_mano2 = tk.Label(bg="pink",text=" Dern. Rev Mano O2 * ") # Date de Revision Mano O2 label_date_rev_mano2.grid(row=16, column=9, padx=6, pady=5, sticky="E") vcmd = (root.register(on_validate), '%P') entry_date_rev_mano2 = tk.Entry( font=("Helvetica", 10, "bold"), fg="red",width=15,validate="focusout", validatecommand=vcmd) entry_date_rev_mano2.grid(row=16, column=10, padx=7, pady=5, sticky="W") label_analyse = tk.Label( bg="pink",text=" No Analyseur O2 ") # No SOS Analyseur O2 label_analyse.grid(row=17, column=3, padx=5, pady=5, sticky="E") entry_analyse =tk.Entry() entry_analyse.grid(row=17, column=4, padx=5, pady=5, sticky="W") label_serie_analyse = tk.Label(bg="pink", text=" No Serie Analyseur O2 ") # No Serie Analyseur O2 label_serie_analyse.grid(row=17, column=5, padx=5, pady=5, sticky="E") entry_serie_analyse =tk.Entry() entry_serie_analyse.grid(row=17, column=6, padx=5, pady=5, sticky="W") import re # Date Revision Analyseur def validate_date(date): pattern = re.compile(r"^\d{2}/\d{2}/\d{4}$") if pattern.match(date): return True else: messagebox.showerror("Erreur de format", "Le format de la date doit être jj/mm/aaaa.") return False def on_validate(P): return validate_date(P) label_date_rev_analyseo2 = tk.Label(bg="pink", text=" Dern. Rev Analyseur O2 * ") label_date_rev_analyseo2.grid(row=17, column=7, padx=6, pady=5, sticky="E") vcmd = (root.register(on_validate), '%P') entry_date_rev_analyseo2 = tk.Entry( font=("Helvetica", 10, "bold"), fg="red",width=15,validate="focusout", validatecommand=vcmd) entry_date_rev_analyseo2.grid(row=17, column=8, padx=7, pady=5, sticky="W") label_serie_oxymetre = tk.Label( bg="pink",text=" No Serie Oxymetre ") # No serie Oxymetre label_serie_oxymetre.grid(row=17, column=9, padx=5, pady=5, sticky="E") entry_serie_oxymetre =tk.Entry(width=15) entry_serie_oxymetre.grid(row=17, column=10, padx=5, pady=5, sticky="W") label_combobox_colonne_debit = tk.Label(bg="pink", text=" Stylo Debit-Litre ") # Stylo Debit Litre label_combobox_colonne_debit.grid(row=18, column=3, padx=5, pady=5, sticky="E") options = ["Oui", "Non",] combobox_colonne_debit = ttk.Combobox(values=options,state="readonly",width=10) combobox_colonne_debit.grid(row=18, column=4, padx=5, pady=5, sticky="W") label_philips = tk.Label( bg="pink",text=" No Module PHILIPS ") # No Module PHILIPS label_philips.grid(row=18, column=5, padx=5, pady=5, sticky="E") entry_philips =tk.Entry(width=15) entry_philips.grid(row=18, column=6, padx=5, pady=5, sticky="W") label_resmed = tk.Label(bg="pink",text=" No Module RESMED ") # No Module RESMED label_resmed.grid(row=18, column=7, padx=5, pady=5, sticky="E") entry_resmed =tk.Entry(width=15) entry_resmed.grid(row=18, column=8, padx=5, pady=5, sticky="W") label_clef_agence = tk.Label( bg="pink", text=" Clef Agence ") # Clef Agence (O/N) label_clef_agence.grid(row=19, column=2, padx=5, pady=5, sticky="E") options = [ "Non","Technique","Acceuil"] combobox_clef_agence = ttk.Combobox(values=options,width=15, state="readonly") combobox_clef_agence.grid(row=19, column=3, padx=5, pady=5, sticky="W") label_clef_cafe = tk.Label( bg="pink", text=" Clef Café ") # Clef Café label_clef_cafe.grid(row=19, column=5, padx=5, pady=5, sticky="E") options = [ "Non","Illisible"," "] combobox_clef_cafe = ttk.Combobox(width=15,values=options, ) combobox_clef_cafe.grid(row=19, column=6, padx=5, pady=5, sticky="W") label_bip_portail = tk.Label( bg="pink", text=" No BIP Portail ") # BIP Portail label_bip_portail.grid(row=19, column=7, padx=5, pady=5, sticky="E") entry_bip_portail =tk.Entry(root) entry_bip_portail.grid(row=19, column=8, padx=5, pady=5, sticky="W") label_bip_agence = tk.Label( bg="pink", text=" No du BIP Agence ") # BIP Agence label_bip_agence.grid(row=19, column=9, padx=5, pady=5, sticky="E") entry_bip_agence =tk.Entry(root) entry_bip_agence.grid(row=19, column=10, padx=5, pady=5, sticky="W") label_polo = tk.Label( bg="yellow",text=" Taille: Polo / Chemise ") # Taille polo / Chemise label_polo.grid(row=14, column=0, padx=5, pady=5, sticky="E") options = ["S", "M","L","XL","XXL","3XL",""] combobox_polo = ttk.Combobox(values=options,width=5) combobox_polo.grid(row=14, column=1, padx=5, pady=5, sticky="W") label_combobox_quantité_polo = tk.Label(bg="yellow",text=" Dotation Polo / Chemise ") # Quantite Polo / Chemise label_combobox_quantité_polo.grid(row=14, column=2, padx=5, pady=5, sticky="E") options = [ "1","2","3","4","5"] combobox_quantité_polo = ttk.Combobox(values=options, width=5) combobox_quantité_polo.grid(row=14, column=3, padx=5, pady=5, sticky="W") label_pantalon = tk.Label( bg="yellow",text=" Taille Pantalon FR") # Taille Pantalon label_pantalon.grid(row=15, column=0, padx=5, pady=5, sticky="E") options = ["38", "40","42","44","46","48",""] combobox_pantalon = ttk.Combobox(values=options,width=5) combobox_pantalon.grid(row=15, column=1, padx=5, pady=5, sticky="W") label_combobox_quantité_pantalon = tk.Label( bg="yellow", text=" Dotation Pantalon") # Quantite Pantalon label_combobox_quantité_pantalon.grid(row=15, column=2, padx=5, pady=5, sticky="E") options = [ "1","2","3","4","5",""] combobox_quantité_pantalon = ttk.Combobox(values=options,width=5) combobox_quantité_pantalon.grid(row=15, column=3, padx=5, pady=5, sticky="W") label_parka = tk.Label( bg="yellow",text=" Taille Parka ") # Taille Parka label_parka.grid(row=16, column=0, padx=5, pady=5, sticky="E") options = ["S", "M","L","XL","XXL","3XL",""] combobox_parka = ttk.Combobox(values=options,width=5) combobox_parka.grid(row=16, column=1, padx=5, pady=5, sticky="W") label_combobox_quantité_parka = tk.Label( bg="yellow", text="Dotation Parka") # Quantite Parka label_combobox_quantité_parka.grid(row=16, column=2, padx=5, pady=5, sticky="E") options = [ "1","2","3","4","5",""] combobox_quantité_parka = ttk.Combobox(values=options,width=5) combobox_quantité_parka.grid(row=16, column=3, padx=5, pady=5, sticky="W") label_combobox_polaire = tk.Label( bg="yellow", text=" Taille Polaire ") # Taille Polaire label_combobox_polaire.grid(row=17, column=0, padx=5, pady=5, sticky="E") options = ["XS","S", "M","L","XL","XXL","3XL","4XL","5XL",""] combobox_polaire = ttk.Combobox(values=options,width=5) combobox_polaire.grid(row=17, column=1, padx=5, pady=5, sticky="W") label_combobox_quantité_polaire = tk.Label( bg="yellow", text=" Dotation Polaire") # Quantite Polaire label_combobox_quantité_polaire.grid(row=17, column=2, padx=5, pady=5, sticky="E") options = [ "1","2","3","4","5",""] combobox_quantité_polaire = ttk.Combobox(values=options,width=5) combobox_quantité_polaire.grid(row=17, column=3, padx=5, pady=5, sticky="W") label_combobox_chaussure = tk.Label( bg="yellow", text=" Pointure Chaussures ") # Pointure Chaussure label_combobox_chaussure.grid(row=18, column=0, padx=5, pady=5, sticky="E") options = ["35","36", "37","38","39","40","41","42","43","44","45","46","47","48","49","50","51",""] combobox_chaussure = ttk.Combobox(values=options,width=5) combobox_chaussure.grid(row=18, column=1, padx=5, pady=5, sticky="W") label_combobox_quantité_chaussure = tk.Label( bg="yellow",text=" Dotation Chaussures") # Quantite Chaussure label_combobox_quantité_chaussure.grid(row=18, column=2, padx=5, pady=5, sticky="E") options = [ "1","2",""] combobox_quantité_chaussure = ttk.Combobox(values=options,width=5) combobox_quantité_chaussure.grid(row=18, column=3, padx=5, pady=5, sticky="W") label_ordi1 = tk.Label(bg="lightblue", text=" Nom Ordinateur 1 ") # Nom Ordianteur 1 label_ordi1.grid(row=23, column=0, padx=5, pady=5, sticky="E") entry_ordi1 =tk.Entry() entry_ordi1.grid(row=23, column=1, padx=5, pady=5, sticky="W") label_combobox_ordi11 = tk.Label(bg="lightblue", text="Type Ordinateur 1") # Type ORDI 1 label_combobox_ordi11.grid(row=23, column=2, padx=5, pady=5, sticky="E") options = ["Portable", "Fixe","Autre"] combobox_ordi11 = ttk.Combobox( values=options, width=15, state="readonly", style="TCombobox") combobox_ordi11.grid(row=23, column=3, padx=5, pady=5, sticky="W") label_combobox_imprimante_dom = tk.Label(bg="lightblue", text=" Imprimante ") # Imprimante au Domicile ? label_combobox_imprimante_dom.grid(row=23, column=4, padx=5, pady=5, sticky="E") options = ["Oui", "Non"] combobox_imprimante_dom = ttk.Combobox(values=options,width=15,state="readonly" ) combobox_imprimante_dom.grid(row=23, column=5, padx=5, pady=5, sticky="W") label_serie_imprimante = tk.Label( bg="lightblue",text=" No de serie Imprimante ") # No De Serie Imprimante label_serie_imprimante.grid(row=23, column=6, padx=5, pady=5, sticky="E") entry_serie_imprimante =tk.Entry() entry_serie_imprimante.grid(row=23, column=7, padx=5, pady=5, sticky="W") label_combobox_sac_dos = tk.Label(bg="lightblue", text="Sac à dos") # Sac a dos label_combobox_sac_dos.grid(row=23, column=9, padx=5, pady=5, sticky="E") options = ["Oui", "Non"] combobox_sac_dos = ttk.Combobox(values=options, width=15, state="readonly",) combobox_sac_dos.grid(row=23, column=10, padx=5, pady=5, sticky="W") label_ordi2 = tk.Label( bg="lightblue",text=" Nom Ordinateur 2 ") # Nom Ordianteur 2 label_ordi2.grid(row=24, column=0, padx=5, pady=5, sticky="E") entry_ordi2 =tk.Entry() entry_ordi2.grid(row=24, column=1, padx=5, pady=5, sticky="W") label_combobox_ordi12 = tk.Label(bg="lightblue", text=" Type Ordinateur 2 ") # Type Ordianteur 2 label_combobox_ordi12.grid(row=24, column=2, padx=5, pady=5, sticky="E") options = ["Portable", "Fixe","Aucun"] combobox_ordi12 = ttk.Combobox(values=options,width=15,state="readonly" ) combobox_ordi12.grid(row=24, column=3, padx=5, pady=5, sticky="W") label_peripherique = tk.Label( bg="lightblue",text=" Autres Accessoires ") # Autres accessoires label_peripherique.grid(row=24, column=4, padx=5, pady=5, sticky="E") entry_peripherique =tk.Entry(width=25) entry_peripherique.grid(row=24, column=5, padx=5, pady=5, sticky="W") label_permis = tk.Label(bg="lightgreen", text=" No Permis de Conduire ") # No permis de conduire label_permis.grid(row=26, column=0, padx=5, pady=5, sticky="E") entry_permis =tk.Entry() entry_permis.grid(row=26, column=1, padx=5, pady=5, sticky="W") label_obtention = tk.Label(bg="lightgreen", text=" Date d'obtention ") # Date d'obtention du permis label_obtention.grid(row=26, column=2,padx=5, pady=5, sticky="E") entry_obtention =tk.Entry() entry_obtention.grid(row=26, column=3, padx=5, pady=5, sticky="W") label_pref = tk.Label(bg="lightgreen", text=" Prefecture ") # Prefecture d'obtention label_pref.grid(row=26, column=4, padx=5, pady=5, sticky="E") entry_pref =tk.Entry() entry_pref.grid(row=26, column=5, padx=5, pady=5, sticky="W") label_type_v = tk.Label(bg="lightgreen", text=" Type Vehicule ") # Type de vehicule label_type_v.grid(row=27, column=0, padx=5, pady=5, sticky="E") entry_type_v =tk.Entry() entry_type_v.grid(row=27, column=1, padx=5, pady=5, sticky="W") label_immat = tk.Label(bg="lightgreen", text=" Immatriculation du vehicule ") # Immatriculation Vehicule PRO label_immat.grid(row=27, column=2, padx=5, pady=5, sticky="E") entry_immat =tk.Entry(root) entry_immat.grid(row=27, column=3,padx=5, pady=5, sticky="W") label_km_v = tk.Label( bg="lightgreen",text=" KM Vehicule ") # KM du Vehicule label_km_v.grid(row=27, column=4, padx=5, pady=5, sticky="E") entry_km_v =tk.Entry(font=("Helvetica", 10, "bold"), fg="red",width=15) entry_km_v.grid(row=27, column=5, padx=5, pady=5, sticky="W") label_pneu = tk.Label(bg="lightgreen", text=" Dimension Pneumatique ") # Dimension Pneumatique label_pneu.grid(row=27, column=6, padx=5, pady=5, sticky="E") entry_pneu =tk.Entry(font=("Helvetica", 10, "bold"), fg="red",width=15) entry_pneu.grid(row=27, column=7,padx=5, pady=5, sticky="W") label_epi = tk.Label( bg="lightgreen",text=" EPI (Gants/Lunettes/Casque...)") # EPI label_epi.grid(row=27, column=8, padx=5, pady=5, sticky="E") entry_epi =tk.Entry(font=("Helvetica", 10, "bold"), fg="red",width=15) entry_epi.grid(row=27, column=9,padx=5, pady=5, sticky="W") def on_validate_date(P): # Dat de Mise en Service if re.match(r'^\d{2}/\d{2}/\d{4}$', P): return True else: messagebox.showerror("Erreur de validation", "Veuillez entrer une date au format jj/mm/aaaa.") return False label_date_mes_vehicule = tk.Label(bg="lightgreen", text=" Date de Mise en service * ",) label_date_mes_vehicule.grid(row=28, column=0, padx=5, pady=5, sticky="E") vcmd = (root.register(on_validate_date), '%P') entry_date_mes_vehicule = tk.Entry( validate="focusout", validatecommand=vcmd) entry_date_mes_vehicule.grid(row=28, column=1, padx=5, pady=5, sticky="W") label_echeance_veh = tk.Label( bg="lightgreen",text=" Date d'échéance * ") # Date d'echeance label_echeance_veh.grid(row=28, column=2, padx=5, pady=5, sticky="E") entry_echeance_veh = tk.Entry(font=("Helvetica", 10, "bold"), fg="red",width=15,validate="focusout", validatecommand=vcmd) entry_echeance_veh.grid(row=28, column=3, padx=5, pady=5, sticky="W") label_contrat = tk.Label(bg="lightgreen", text=" Contrat ") # Contrat label_contrat.grid(row=28, column=4, padx=5, pady=5, sticky="E") entry_contrat =tk.Entry(font=("Helvetica", 10, "bold"), fg="red",width=15) entry_contrat.grid(row=28, column=5, padx=5, pady=5, sticky="W") label_tsecours = tk.Label(bg="lightgreen",text=" Trousse 1er Secours ",) # Trousse 1er Secours label_tsecours.grid(row=29, column=2, padx=5, pady=5,sticky="E") options = [ "Oui","Non","En Attente"] combobox_tsecours = ttk.Combobox(values=options,state="readonly") combobox_tsecours.grid(row=29, column=3, padx=5, pady=5, sticky="W") import re # Date Peremption Trousse 1er Secours def validate_date(date): pattern = re.compile(r"^\d{2}/\d{2}/\d{4}$") if pattern.match(date): return True else: messagebox.showerror("Erreur de format", "Le format de la date doit être jj/mm/aaaa.") return False def on_validate(P): return validate_date(P) label_tsecours_date = tk.Label( bg="lightgreen",text=" Date de Péremption * ",) label_tsecours_date.grid(row=29, column=4, padx=5, pady=5, sticky="E") entry_tsecours_date = tk.Entry(font=("Helvetica", 10, "bold"), fg="red",width=15,validate="focusout", validatecommand=vcmd) entry_tsecours_date.grid(row=29, column=5, padx=5, pady=5, sticky="W") label_extincteur = tk.Label( bg="lightgreen",text=" No Extincteur Vehicule ") # No Extincteur label_extincteur.grid(row=33, column=6, padx=5, pady=5, sticky="E") entry_extincteur = tk.Entry(font=("Helvetica", 10, "bold"), fg="red",width=15) entry_extincteur.grid(row=33, column=7, padx=5, pady=5,sticky="W") import re # Date derniere Revision Extincteur def validate_date(date): pattern = re.compile(r"^\d{2}/\d{2}/\d{4}$") if pattern.match(date): return True else: messagebox.showerror("Erreur de format", "Le format de la date doit être jj/mm/aaaa.") return False def on_validate(P): return validate_date(P) label_der_ext = tk.Label(bg="lightgreen", text=" Date derniere Revision * ") label_der_ext.grid(row=33, column=8, padx=5, pady=5, sticky="E") entry_der_ext = tk.Entry( validate="focusout", validatecommand=vcmd) entry_der_ext.grid(row=33, column=9, padx=5, pady=5) entry_recherche = tk.Entry(font=("Helvetica", 10, "bold"), fg="red",width=15) entry_recherche.grid(row=45, column=1 ) button_recherche = tk.Button( text=" RECHERCHER ",command=rechercher_fiche) button_recherche.grid(row=45, column=0 ) entry_recherche.bind("", to_uppercase) root.mainloop()