2017-10-17 11 views
-2

Je souhaite que mon widget Listbox soit mis à jour en cliquant sur un bouton. Cependant, j'ai rencontré une erreur de logique. Quand je clique sur le bouton, rien ne se passe. Pas d'erreurs du tout.Ajout d'éléments à Listbox dans Python Tkinter

listOfCompanies: [[1, ''], [2, '-'], [3, '@ASK TRAINING PTE. LTD.'], [4, 'AAIS'], [5, 'Ademco'], [6, 'Anacle'] 

def populatebox(): 
      listBox.insert("end", listOfCompanies) 

btn = Button(self, text="Update list", command = lambda: populatebox()) 
btn.pack() 
+0

Je ne crois pas que vous n'obtenez pas une erreur. 'listOfCompanies' est une' liste' qui n'existe pas dans la fonction 'populatebox()' alors quand on l'appelle dans cette fonction, elle renvoie une erreur 'NameError: name 'listOfCompanies' n'est pas défini'. Vous êtes donc assuré de renvoyer une erreur avec le code que vous nous avez fourni. –

+0

lecture-accès à la liste est possible même si la liste n'est pas définie dans populatebox() - donc Python ne va pas se plaindre à ce sujet – DonGru

+0

@DonGru Le 'list' n'existe pas, point final. Elle l'a déclaré incorrectement. –

Répondre

0

Si vous êtes à la recherche d'insérer simplement chaque tuple dans le Listbox du list car ils sont sans séparer les tuple alors il y a deux changements majeurs.

D'abord vous ne pouvez pas déclarer une liste comme list: [1, 2, 3, ...], elle doit être list = [1, 2, 3, ...].

Deuxièmement, vous essayez actuellement d'insérer la totalité list sur une entrée dans le Listbox. Vous devriez plutôt parcourir sur eux, voir ci-dessous pour un exemple:

from tkinter import * 

root = Tk() 

listBox = Listbox(root) 
listBox.pack() 

listOfCompanies = [[1, ''], [2, '-'], [3, '@ASK TRAINING PTE. LTD.'], [4, 'AAIS'], [5, 'Ademco'], [6, 'Anacle']] 

def populatebox(): 
    for i in listOfCompanies: 
     listBox.insert("end", i) 

btn = Button(root, text="Update list", command = lambda: populatebox()) 
btn.pack() 
+0

En fait, j'ai obtenu la liste en lisant un fichier .csv mais je ne l'ai pas inclus dans le post original car je pensais que cela rendrait le post trop long et ce n'était pas pertinent. De toute façon, j'ai essayé de placer le code que vous avez suggéré et de même, il n'a donné aucune sortie et aucune erreur lorsque j'ai cliqué sur le bouton. –

+0

Grattez ça, ça a marché. Merci Ethan. –

+0

Si cette solution répond à votre question, veuillez la marquer comme acceptée pour les futurs utilisateurs. –