Supprimer un élement d'une liste de dictionnaire via un combobox

Résolu/Fermé
xunil2003 - Modifié par xunil2003 le 19/08/2015 à 14:42
xunil2003 Messages postés 766 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2024 - 19 août 2015 à 18:34
Bonjour,

Je suis débutant python 2.7.6.
Je cherche à supprimer un element de ma liste de dictionnaire via un combobox.
[{'nom': 'Dupont', 'prenom': 'Laurent', 'telephone': '077700110033', 'civilite': 'Monsieur', 'password': 'ztPyAhxedMxzzo', 'identifiant': '44385201'}, {'nom': 'Dupont', 'prenom': 'Nathalie', 'telephone': '06160338822', 'civilite': 'Madame', 'password': 'Bk99NIOps1Zkzn', 'identifiant': '24608969'}]


L'utilisateur sélectionne le numéro dans le combobox qui est transmise ici :
del liste[combo_del_contact.get()]


Mais j'obtiens ce message d'erreur :
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_8.py", line 573, in valider_supprimer_dico
del liste[combo_del_contact.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


Code :
def supprimer_dico():
global combo_del_contact
filewin = Toplevel(root)
compte_liste_agenda = len(agenda)
print compte_liste_agenda
liste_numero_contact = []
i = 0
while i < compte_liste_agenda:
liste_numero_contact.append(i)
i += 1

print "liste_numero_contact :", liste_numero_contact
Label(filewin, text="Veuillez selectionner le numéro du contact à supprimer ").grid(row=1, padx =14, pady =6)
combo_del_contact = Pmw.ComboBox(filewin, labelpos = NW,
scrolledlist_items = liste_numero_contact,
listheight = 150)
combo_del_contact.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
for index, agendas in enumerate(agenda):
print index, agendas
liste.append(agendas)

del liste[combo_del_contact.get()] # supprime un élément d'une liste à une indice déterminé (N° id de la liste).
print liste


Comment dois-je procéder pour faire passer la valeur de la variable ?
del liste[combo_del_contact.get()]

Pouvez-vous m'aiguiller ?
Merci.

A voir également:

1 réponse

xunil2003 Messages postés 766 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2024 14
Modifié par xunil2003 le 19/08/2015 à 18:35
Bonsoir,

Voilà, j'ai compris pas de str mais un entier !
variable_combo_del_contact = int(combo_del_contact.get())
del liste[variable_combo_del_contact]


Merci.
0