首页 > 解决方案 > Python:如何根据另一个组合框的选择从 SQL 获取 ttk 组合框的数据

问题描述

我正在尝试使用两个 ttk 组合框从 sqlite 数据库中获取数据。我设法能够使用 combo_division() 函数在一个名为 divisiondropmenu 的组合框中列出项目。现在我正在尝试对名为 productdropmenu 的第二个组合框做类似的事情,但需要根据组合框中名为 divisiondropmenu 的第一个选定项目来缩小列表的范围。

为了让 SQL 查询传递第二个组合框所需的信息,我正在考虑这样的事情:

'SELECT * FROM productname WHERE divisionname=?', (function_name())

到目前为止两个组合框的代码:

from tkinter import *
from tkinter import ttk
from tkinter.ttk import *
import sqlite3


def combo_division():
    conn = sqlite3.connect('anglingdatabase.db')
    cursor = conn.cursor()
    cursor.execute('SELECT divisionname FROM productdivision')
    data = []
    for row in cursor.fetchall():
    data.append(row[0])
    return data

root = Tk()
root.title("Random Window Title")
root.geometry('1280x720')

rows = 0
while rows < 50:
    root.rowconfigure(rows, weight=1)
    root.columnconfigure(rows, weight=1)
    rows += 1


divisiondropmenu = ttk.Combobox(root)
divisiondropmenu['values'] = combo_division()
divisiondropmenu.bind('<<ComboboxSelected>>', selecteddivision)
divisiondropmenu.grid(row=1, column=2, sticky='NESW')

productdropmenu = ttk.Combobox(root)
productdropmenu['values'] = combo_product()
productdropmenu.grid(row=2, column=2, sticky='NESW')

root.mainloop()

标签: pythonpython-3.xsqlitetkintercombobox

解决方案


data = combo_division()
example_sql = ''' SELECT * FROM tablename WHERE division in ('{}') '''.format("','".join(data))

您可以动态构建实际的 SQL,前提是数据绝不是用户输入(以避免 SQL 注入)。


推荐阅读