将sqlite3数据显示到Treeview中

时间:2019-03-28 16:02:29

标签: python-3.x tkinter sqlite treeview

我正在编写一些代码,显示带有食物信息的食物清单。

我的代码:

-连接到数据库并成功获取项目

正确循环

问题:

-如果我的产品名称是一个单词(例如鸡蛋),我的代码会在正确的列中显示所有内容

-如果我的产品名称是两个或两个以上字词(例如:磨砂片),我的代码在第一列显示“磨砂”,然后在下一列显示“磨砂”,这是不正确的

from tkinter import ttk
import tkinter as tk
import sqlite3
try:
    from Tkinter import *
except ImportError:
    from tkinter import *

def View():
    db = sqlite3.connect("food_data.db")
    cursor = db.cursor()
    cursor.execute("SELECT name, quantity, expdate FROM food ORDER BY expdate ASC")
    for row in cursor:
        disp=('{0} {1} {2}'.format(row[0], row[1], row[2]))
        tree.insert("",tk.END, values=disp)
    db.close()

root = tk.Tk()
root.geometry("800x480")
tree = ttk.Treeview(column=("column1","column2","column3"),show='headings')
tree.heading("#1", text="Name")
tree.heading("#2", text="Quantity")
tree.heading("#3", text="Expiration Date")
tree.pack()

b2 = tk.Button(text="view data", command=View)
b2.pack()

root.mainloop()

假设成功地将名称中带有多个单词的项目显示在一个列上,而不携带到下一列。

1 个答案:

答案 0 :(得分:0)

def View():
    db = sqlite3.connect("food_data.db")
    cursor = db.cursor()
    cursor.execute("SELECT name, quantity, expdate FROM food ORDER BY expdate ASC")
    for row in cursor:
       # disp=('{0} {1} {2}'.format(row[0], row[1], row[2]))
        tree.insert("",tk.END, values=(row[0], row[1], row[2]))
    db.close()

以这种方式进行操作,而不是在对其进行迭代之后必须将其内容插入树视图中,例如为tuplelist

 tree.insert("",tk.END, values=(row[0], row[1], row[2]))