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

Posted

技术标签:

【中文标题】如何使用从我的 SQLite 数据库中检索到的数据填充 tkinter 下拉框?【英文标题】:How do I populate tkinter drop-down box with data retrieved from my SQLite database? 【发布时间】:2015-04-05 11:13:24 【问题描述】:

基本上,我有一个带有数据库的电影院预订系统,该数据库存储正在播放的电影以及在什么时间日期等。我已经设法以我希望使用的格式打印内容,但是我不确定如何使用它使用 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】:

您可以在代码中的某处定义 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()

【讨论】:

嘿,这对我帮助很大,除了我收到元组索引必须是整数而不是 str 的错误 我没有收到任何错误。你能提供你正在操作的数据吗?也许简单的类型转换就可以解决问题。 没关系,我编辑错了。效果很好,谢谢!

以上是关于如何使用从我的 SQLite 数据库中检索到的数据填充 tkinter 下拉框?的主要内容,如果未能解决你的问题,请参考以下文章

从 SQLite 数据库中检索图像(BLOB 数据类型)

为啥 getBlob() 从我的数据库中的 Blob 列中检索整数数据?

从 SQLite 数据库中检索特定项目

如何从android中的sqlite中检索数据

在 iOS 中访问 Photos.sqlite 以检索照片元数据

如何使用数据库检索日期设置 raddatepicker 日期