我正在编写一些代码,显示带有食物信息的食物清单。
我的代码:
-连接到数据库并成功获取项目
正确循环
问题:
-如果我的产品名称是一个单词(例如鸡蛋),我的代码会在正确的列中显示所有内容
-如果我的产品名称是两个或两个以上字词(例如:磨砂片),我的代码在第一列显示“磨砂”,然后在下一列显示“磨砂”,这是不正确的
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()
假设成功地将名称中带有多个单词的项目显示在一个列上,而不携带到下一列。
答案 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()
以这种方式进行操作,而不是在对其进行迭代之后必须将其内容插入树视图中,例如为tuple
或list
。
tree.insert("",tk.END, values=(row[0], row[1], row[2]))