在tk中想把从数据库中查询到的数据显示在tree view,怎么写
时间: 2023-11-27 08:51:58 浏览: 29
在Tkinter中,可以使用`Treeview`来显示数据库中查询到的数据。下面是一个简单的示例代码:
```python
import tkinter as tk
import sqlite3
from tkinter import ttk
# 连接数据库
conn = sqlite3.connect('example.db')
c = conn.cursor()
# 创建表
c.execute('''CREATE TABLE IF NOT EXISTS books
(id INTEGER PRIMARY KEY,
title TEXT,
author TEXT,
year INTEGER)''')
# 插入数据
c.execute("INSERT INTO books VALUES (1, 'The Great Gatsby', 'F. Scott Fitzgerald', 1925)")
c.execute("INSERT INTO books VALUES (2, 'To Kill a Mockingbird', 'Harper Lee', 1960)")
# 提交更改
conn.commit()
# 查询数据
c.execute("SELECT * FROM books")
rows = c.fetchall()
# 创建Tkinter窗口
root = tk.Tk()
# 创建Treeview
tree = ttk.Treeview(root)
# 添加列名
tree['columns'] = ('Title', 'Author', 'Year')
# 设置列显示方式
tree.column('#0', width=0, stretch=tk.NO)
tree.column('Title', anchor=tk.CENTER, width=200)
tree.column('Author', anchor=tk.CENTER, width=200)
tree.column('Year', anchor=tk.CENTER, width=50)
# 添加列名文字
tree.heading('#0', text='', anchor=tk.CENTER)
tree.heading('Title', text='Title', anchor=tk.CENTER)
tree.heading('Author', text='Author', anchor=tk.CENTER)
tree.heading('Year', text='Year', anchor=tk.CENTER)
# 添加数据
for row in rows:
tree.insert('', tk.END, text='', values=row[1:])
# 显示Treeview
tree.pack()
# 主循环
root.mainloop()
# 关闭数据库连接
conn.close()
```
在这个示例中,我们首先连接到一个SQLite数据库,并创建一个名为`books`的表。然后,我们向表中插入两个书籍的数据,并提交更改。接下来,我们查询表中的所有行,并将它们存储在`rows`变量中。然后,我们创建了一个Tkinter窗口和一个`Treeview`,并设置了列名和显示方式。最后,我们将查询到的数据添加到`Treeview`中,并显示出来。
你可以根据自己的需要修改这个示例代码,并将其用于你自己的项目中。