python tkinter treeview分级显示sqlite3数据库内容
import tkinter as tk
from tkinter import ttk
import sqlite3
def populate_treeview(tree, cursor):
cursor.execute("SELECT * FROM table_name") # 替换为你的表名
rows = cursor.fetchall()
for row in rows:
parent_id = None
for column, data in enumerate(row):
if column == 0: # 假设第一列是父级ID
parent_id = data
if parent_id not in parent_map:
parent_map[parent_id] = tree.insert('', 'end', text=parent_id)
else:
tree.insert(parent_map.get(parent_id), 'end', text=data)
def main():
# 创建Tkinter窗口
root = tk.Tk()
root.title("SQLite3数据库TreeView展示")
# 连接SQLite3数据库
conn = sqlite3.connect('your_database.db') # 替换为你的数据库文件名
cursor = conn.cursor()
# 创建Treeview控件
tree = ttk.Treeview(root, columns=('Size', 'Modified'))
tree.heading('#0', text='节点名')
tree.heading('Size', text='大小')
tree.heading('Modified', text='修改日期')
tree.pack(fill=tk.BOTH, expand=True)
# 填充Treeview控件
parent_map = {}
populate_treeview(tree, cursor)
# 运行Tkinter事件循环
root.mainloop()
if __name__ == '__main__':
main()
这段代码首先创建了一个Tkinter窗口,连接了SQLite3数据库,并创建了一个Treeview控件。然后定义了populate_treeview
函数来遍历数据库表的所有行,并将数据插入到Treeview控件中。最后,运行Tkinter的事件循环。在这个过程中,使用了一个字典parent_map
来跟踪父级ID与Treeview项之间的关系,以确保数据按层级正确显示。
评论已关闭