xunil2003 | Bon jour,
Je suis débutant python ma version de python est la 2.7.6.
J'ai fait un mini programme pour des contacts avec tkinter.
Afin d'ajouter/supprimer/modifier les contacts je crée un dictionnaire pour chaque contact que je mets dans une liste.
Code :
- agenda = [{'nom': 'Dupond', 'prenom': 'Laurent', 'telephone': '0777445588', 'civilite': 'Monsieur', 'password': 'ybfyAhadrHcrio', 'identifiant': '11238741'}, {'nom': 'Dupond', 'prenom': 'Nathalie', 'telephone': '0616990077', 'civilite': 'Madame', 'password': 'tg11TIOps1Zbac', 'identifiant': '19801429'}]
|
Seulement ça marche pas , mais ma variable passe dans la fonction valider_supprimer_dico() ?
Code :
- del liste[numero_contact]
|
j'ai vérifié avec un print
Code :
- print "numero_contact : ", numero_contact
|
Je voudrais également savoir ce qu'il faut-il faire pour fermer automatiquement la fenêtre toplevel une fois cliqué sur le bouton valider de la fonction supprimer_dico() ?
Pouvez-vous m'aider ?
Merci .
Code :
- def supprimer_dico():
- global combo
- filewin = Toplevel(root)
- print "\nsupprimer_dico"
- print "-------------\n"
- agenda = creer_dico() # importation du dictionnaire
- print
- compte_liste_agenda = len(agenda)
- print compte_liste_agenda
- liste_numero_contact = []
- i = 0
- while i < compte_liste_agenda:
- print(i)
- liste_numero_contact.append(i)
- i += 1
- print "liste_numero_contact :", liste_numero_contact
- #filewin = Pmw.initialise()
- Label(filewin, text="Veuillez selectionner le numéro du contact à supprimer " ).grid(row=1, padx =14, pady =6)
- combo = Pmw.ComboBox(filewin, labelpos = NW,
- scrolledlist_items = liste_numero_contact,
- listheight = 150)
- combo.grid(row =2, padx =8, pady =6)
- bou = Button(filewin, text ="Fermer", command = filewin.destroy)
- bou.grid(row =3, padx =10, pady =6)
- bou = Button(filewin, text ="Valider", command = valider_supprimer_dico)
- bou.grid(row =4, padx =20, pady =16)
-
- def valider_supprimer_dico():
- global agenda
- agenda = creer_dico() # importation du dictionnaire
- liste_numero_contact = []
- for index, agendas in enumerate(agenda):
- print index, agendas
- liste_numero_contact.append(agendas)
- print liste_numero_contact
- print
- numero_contact = combo.get()
- print "numero_contact : ", numero_contact
- del liste[numero_contact] # supprime un élément de la liste à une indice déterminé (N° id de la liste).
- print liste
- agenda = liste
- def afficher_dico():
- filewin = Toplevel(root)
- texte = Label(filewin, text='N° - Nom - Prénom - Téléphone - Indentifiant - Mot de passe', fg='black')
- texte.pack()
- texte = Label(filewin, text='--------------------------------------------------------------------------------------------', fg='black')
- texte.pack()
- for index, agendas in enumerate(agenda): #liste_agenda_telephone
- compte_nombre_dico = (len(agenda))
- print compte_nombre_dico
- print index,agendas
- contact = str(index)+' - '+ (agendas['nom']+' - '+ agendas['prenom']+' - '+ agendas['telephone']+' - '+ agendas['identifiant']+' - '+ agendas['password'])
- compte_nombre_caractere = len(contact)
- contact_ok = (contact),'\n'
- texte = Label(filewin, text=contact, fg='black')
- texte.pack()
-
- texte = Label(filewin, text='', fg='black')
- texte.pack()
- button = Button(filewin, text="Fermer", command=filewin.destroy)
- button.pack()
|
message :
Code :
- numero_contact : 0
- Exception in Tkinter callback
- Traceback (most recent call last):
- File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1489, in __call__
- return self.func(*args)
- File "/home/laurent/python/fmsms/test_6.py", line 347, in valider_supprimer_dico
- del liste[combo.get()] # supprime un élément d'une liste à une indice déterminé (N° id de la liste).
- TypeError: list indices must be integers, not str
|
Merci. Message édité par xunil2003 le 15-08-2015 à 13:04:59
|