2016-07-26 17 views
0

Bitte, helfen! Ich habe tagelang gesucht und konnte bisher keine Lösung finden. Sehr geschätzt! HierWie tkinter Dropdown-Menü mit Daten aus Daten füllen? (Python 3.5.1)

ist, was ich habe:

from tkinter import * 
import sqlite3 

root = Tk() 
root.title('Testing Combobox, Listbox & Database') 

db = sqlite3.connect('vehicles.db') 
c = db.cursor() 

# create Combobox 
var = StringVar(root) 
#var.set("") # initial value 

# create Listbox 
list = Listbox(root, width=50, height=20) 

# Populate Listbox 
query = c.execute('SELECT models FROM autos') 
for i in query: 
    listitems.insert(END,i) 

# INSERT LISTBOX INTO COMBOBOX? HOW? 
options = OptionMenu(root, var, xxxxxxx).pack() 

root.mainloop() 
+0

Danke sehr. Ich versuche Ihren Vorschlag, aber jetzt, wenn ich auf den Pfeil nach unten klicke, anstatt die Daten aus der Datenbank zu sehen, bekomme ich: .58088784. Vorher konnte ich die Daten aber alle in einer Zeile sehen. (Anmerkung: Nur für den Fall, dass jemand auf diesen Thread stößt, sehe ich, dass in Zeile 15 - Listenfeld erstellen - meines ersten Beispiels "Liste" nicht als "Listenelemente" eingefügt wurde.) – Andre

+0

Vijay, basierend auf Ihrem Vorschlag habe ich versucht: – Andre

+0

# erstellen Listbox Listitem = Listbox (root) # Populate Listbox query = c.execute ('SELECT Modelle von Autos') für i in Abfrage: listitems.insert (END, i) list = ttk.Combobox (Wurzel, Breite = 20, Höhe = 20) Liste ['Werte'] = Listenelemente list.pack() – Andre

Antwort

2

Ich würde Ihnen vorschlagen, ein Kombinationsfeld

list=Combobox(root, width=50, height=20) 
list['values']=listitems 
list.pack() 

dies funktionierte für mich zu verwenden. Obwohl aus irgendeinem Grund hatte ich ttk explizit zu importieren, die

from tkinter import ttk 
list=ttk.Combobox(root, width=50, height=20) 
list['values']=listitems 
list.pack() 

ist diesen Code ein, nachdem Sie vollständig Ihr ‚Listitems‘ bevölkert haben, das heißt, nach dem ‚for-Schleife‘

0

Noch besser wäre es (

listitems = Listbox(root) 
listitems = query.fetchall() 

und ersetzen:

list['values']=listitems 
oder der richtige Weg) sollten die entfernen sein

mit

list['values']=query.fetchall()