Actions sur des boutons sans nom
Bonjour,
J'ai crée une fenêtre qui par une liste déroulante me choisi une agence (ville), cela m'ouvre une autre fenêtre ou je trouve chaque techniciens lié a cette agence, pour chaque techniciens, j'ai son nom et un bouton, j'ai fais une boucle et il me crée ce bouton et ce label pour chaque techniciens selon la ville choisi.
Ca fonctionne, par contre lorsque j'appui sur un des bouton, je veut lancer une fonction avec en paramètre son nom, comment je récupère son nom ?
Je tente de créer les bouton avec un nom, exemple : toto(aaa) = button..... pour pouvoir intérargir
aaa étant la variable qui compte le nb de techniciens.
Bien sûr ne fonctionne pas, je vois pas comment faire !
La partir du code qui pose problème :
Code:
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
| # FONCTION LISTE DEROULANTE RECHERCHE PAR AGENCE_______________________________________________________________________
def foncBtLstDeroul2(event):
""" Récupère la valeur choisi de la liste déroulante : (par agence)
et ouvre une nouvelle fenêtre avec les noms et prénoms """
lstNomPrenom = []
global varChoix3Liste
varChoix3Liste=3 # Pour définir si la recherche viens du nom, du tel ou de l'agence, (ici : agence) dans la liste déroulante
a = objListDeroulAgen.get () # Recup du choix de la liste déroulante
# Vidage des champs
objListDeroulNom.delete(0, END) #vider le dernier choix au niveau de la liste déroulante
objListDeroulTel.delete(0, END) #vider le dernier choix au niveau de la liste déroulante
# Récupération de la liste des noms et prénoms
for e in lstClass:
if a == e.agence: # Si on le trouve
lstNomPrenom.append(e.nom + " " + e.prenom)
# trie de la liste
lstNomPrenom.sort ()
# Création de la nouvelle fenêtre de la liste des noms par agence
fenNomPrenom = Toplevel ()
fenNomPrenom.title ("Liste des techniciens de l'agence " + a)
fenNomPrenom.configure (bg=varCoulPrinc)
fenNomPrenom.geometry ('300x380')
# Création frame
objFrameAg = LabelFrame (fenNomPrenom, text="Résultat", bg=varCoulPrinc)
objFrameAg.pack (fill="both", expand="yes", padx=5, pady=5) # fill both : extension a yes donc both sinon que sur x ou y
# Création des labels
aaa=0 # Pour incrémentation des lignes (une ligne par techs)
for b in range(len(lstNomPrenom)): # Récup du nb de techs par agence
# Création labels
Button (objFrameAg, image=PHOTOBt2, bg = varCoulPrinc, command=foncAgenVersTech).grid(row=aaa, column=0, padx = (5,0)) # faire fonction avec un paramètre le nom du tech pour revenir sur sa fiche
Label (objFrameAg, bg = varCoulPrinc, text=" " + lstNomPrenom[aaa]).grid(row=aaa, column=1)
aaa += 1
# Création bouton externe
bouSupAg = Button (fenNomPrenom, image=PHOTO4, bg=varCoulPrinc, command=fenNomPrenom.destroy)
bouSupAg.pack(side=BOTTOM)
# Centrage fenêtre
from Fonctions.FoncCentreEcran import centreFenetre
centreFenetre (fenNomPrenom)
# Réception d'événements pour fenMsgBox
fenNomPrenom.mainloop() |
Cette fonction est lancé via une liste déroulante ou on choisi la ville.