2016-07-26 6 views
0

Пожалуйста, помогите! Я потратил дни на поиски и до сих пор не смог найти решение. Очень признателен!Как заполнить выпадающий список tkinter элементами из данных? (Python 3.5.1)

Вот что у меня есть:

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

Спасибо вам. Я пробую ваше предложение, но теперь, когда я нажимаю на стрелку вниз, вместо того, чтобы видеть данные из базы данных, я получаю: .58088784. Прежде чем я смог увидеть данные, но все в одной строке. (Примечание: на всякий случай кто-то сталкивается с этим потоком, я вижу, что в строке 15 - создать Listbox - из моего первого примера, «list» не был вставлен как «listitems».) – Andre

+0

Vijay, исходя из вашего предложения, я попробовал: – Andre

+0

# создать ListBox ListItems = Listbox (корень) # Populate Listbox запрос = c.execute ('SELECT модели из автомобилей') для г в запросе: listitems.insert (END, я) список = ttk.Combobox (root, width = 20, height = 20) list ['values'] = listitems list.pack() – Andre

ответ

2

Я хотел бы предложить вам использовать выпадающий

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

это работает для меня. Хотя по какой-то причине мне пришлось явно импортировать ТКА , который

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

Введите этот код после того, как вы полностью заселены вашей «ListItems», то есть, после «для цикла»

0

еще лучше (или правильный путь) должен быть, чтобы удалить:

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

и заменить:

list['values']=listitems 

с

list['values']=query.fetchall() 
Смежные вопросы