如何使用从我的SQLite数据库中检索的数据填充tkinter下拉框?

时间:2015-02-05 14:36:13

标签: python python-2.7 sqlite tkinter

基本上我有一个电影院预订系统,里面有一个数据库,可以存储电影的内容和时间等等。我已经设法以我希望使用的格式打印内容但是,我不确定如何使用这个关于使用tkinter下拉菜单的数据,该菜单分别显示下面显示的行。

import sqlite3 as lite
conn = lite.connect('Logindetails.db')

with conn:

    conn.row_factory = lite.Row
    cursor = conn.cursor()

    title = raw_input("Name of tile: ")

    query = "SELECT * FROM Viewings WHERE Title=?"
    cursor.execute(query, (title,))

    rows = cursor.fetchall()

    for row in rows:
        data = "%s %s %s %s %s" % (row["Id"], row["Title"], row["Date"], row["Time"], row["Duration"])
        print data

这是我检索所需数据的代码。这是它的输出。

Name of tile: Frozen
1 Frozen 06/15 11:35 95
3 Frozen 06/18 11:35 95
4 Frozen 06/30 11:25 95
5 Frozen 07/02 11:45 95
6 Frozen 07/05 12:30 95

我已经编写了tkinter项目的基础,只是不确定如何操作这些数据并将其导入到一个下拉框中,每个数据集可以单独选择。

1 个答案:

答案 0 :(得分:2)

您可以在代码中的某处定义movieList数组,然后将for循环中创建的字符串追加到movieList数组:

movieList = []
...
for row in rows:
        data = "%s %s %s %s %s" % (row["Id"], row["Title"], row["Date"], row["Time"], row["Duration"])
        movieList.append(data)
        print data

(作为旁注,您可以省略row["Id"]row["Duration"]个字段, 因为前者对用户并不重要,后者是多余的)

使用OptionMenu小部件轻松构建下拉菜单;这是一个带有硬编码值的最小示例,您的movieList将在上述for循环中动态构造:

from Tkinter import *

movieList = ["1 Frozen 06/15 11:35 95", "3 Frozen 06/18 11:35 95",
        "4 Frozen 06/30 11:25 95", "5 Frozen 07/02 11:45 95",
        "6 Frozen 07/05 12:30 95"]

master = Tk()

option = StringVar(master)
option.set(movieList[0]) # Set the first value to be the default option

w = apply(OptionMenu, (master, option) + tuple(movieList))
w.pack()

mainloop()

您可以通过调用get()方法获取所选的选项:

option.get()