2017-08-20 1 views
1

Je suis en train d'ajouter ces colonnes de panda à un Listbox, de sorte qu'ils lisent comme ceci:Comment ajouter des colonnes à un tkinter.Listbox?

New Zealand NZD 
United States USD 

ETC.

J'utilise pandas géants pour obtenir les données d'un .csv, mais quand j'essaie d'utiliser une boucle pour ajouter les éléments à la zone de liste à l'aide d'insertion je reçois l'erreur

NameError: name 'END' is not defined ou NameError: name 'end' is not defined

en utilisant ce code:

def printCSV(): 
    csv_file = ('testCUR.csv') 

    df = pd.read_csv(csv_file) 

    print (df[['COUNTRY','CODE']]) 

your_list = (df[['COUNTRY','CODE']]) 
for item in your_list: 

     listbox.insert(end, item) 
+0

Utilisez la chaîne '" end "'. En outre, une zone de liste ne peut contenir qu'une seule colonne. –

+0

ce que je veux est pour eux d'afficher comme ci-dessus et puis seulement utiliser le code du pays comme valeur alors je devrais créer une boucle for ou quelque chose qui crée la chaîne à mettre dans la liste mais comment obtenir seulement le code du pays ? –

Répondre

1

Vous pouvez transformer le fichier csv dans un dictionnaire, utilisez les pays combinés et les codes monétaires comme les clés et les codes seulement que les valeurs, et enfin insérer les clés dans t il Listbox. Pour obtenir le code de la sélection en cours, vous pouvez le faire: currencies[listbox.selection_get()].

listbox.selection_get() renvoie la clé que vous utilisez ensuite pour obtenir le code devise dans le dict currencies.

import csv 
import tkinter as tk 

root = tk.Tk() 

currencies = {} 

with open('testCUR.csv') as f: 
    next(f, None) # Skip the header. 
    reader = csv.reader(f, delimiter=',') 
    for country, code in reader: 
     currencies[f'{country} {code}'] = code 

listbox = tk.Listbox(root) 
for key in currencies: 
    listbox.insert('end', key) 
listbox.grid(row=0, column=0) 
listbox.bind('<Key-Return>', lambda event: print(currencies[listbox.selection_get()])) 

tk.mainloop() 
+0

Appuyez sur la touche entrée pour imprimer le code de devise de la sélection en cours. La f-string ('f '{country} {code}'') ne fonctionne que dans Python 3.6+, dans une autre version, vous pouvez utiliser la méthode '.format'. – skrx