O J*_*JOE 0 python sqlite treeview tkinter
我遇到了如何将我的sqlite3数据库中的所有记录输出到tkinter treeview.It 中的问题。它只输出中的最后一条记录,db并且记录也没有出现在为其指定的列中。该print方法将所有db记录打印到我的终端,但不输出treeview小部件的所有记录。
欢迎您提出建议以实现这一目标
from tkinter import ttk
import tkinter as tk
import sqlite3
def connect():
conn = sqlite3.connect("TRIAL.db")
cur = conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS profile(id INTEGER PRIMARY KEY,
First TEXT, Surname TEXT)")
conn.commit()
conn.close()
def View():
conn = sqlite3.connect("TRIAL.db")
cur = conn.cursor()
cur.execute("SELECT * FROM profile")
rows = cur.fetchall()
for row in rows:
print(row) # it print all records in the database
tree.insert("", tk.END, values=row)
conn.close()
connect() # this to create the db
root = tk.Tk()
root.geometry("400x400")
tree= ttk.Treeview(root, column=("column", "colunn1"))
tree.heading("#0", text="NUMBER")
tree.heading("#1", text="FIRST NAME")
tree.heading("#2", text="SURNAME")
tree.pack()
b2 = tk.Button(text="view data", command=View)
b2.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
您的代码中有两个问题:
tree.insert("", tk.END, values=row)不在 for 循环内,所以只有最后一行会被插入到树视图中。第二个是该列#0是一个特殊的列,它的值是用 设置的text=...,而不是用设置的values=(...)。要正确显示您的数据,您至少有两种选择:
tree.insert("", tk.END, values=row)为tree.insert("", tk.END, text=row[0], values=row[1:])第二个是不使用特殊列#0,您不需要它,因为您将树视图用作表。创建树时,使用选项show='headings'隐藏列#0并创建 3 列:
from tkinter import ttk
import tkinter as tk
import sqlite3
def connect():
conn = sqlite3.connect("TRIAL.db")
cur = conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS profile(id INTEGER PRIMARY KEY, First TEXT, Surname TEXT)")
conn.commit()
conn.close()
def View():
conn = sqlite3.connect("TRIAL.db")
cur = conn.cursor()
cur.execute("SELECT * FROM profile")
rows = cur.fetchall()
for row in rows:
print(row) # it print all records in the database
tree.insert("", tk.END, values=row)
conn.close()
connect() # this to create the db
root = tk.Tk()
root.geometry("400x400")
tree= ttk.Treeview(root, column=("column1", "column2", "column3"), show='headings')
tree.heading("#1", text="NUMBER")
tree.heading("#2", text="FIRST NAME")
tree.heading("#3", text="SURNAME")
tree.pack()
b2 = tk.Button(text="view data", command=View)
b2.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
8660 次 |
| 最近记录: |