Python如何读取Access表数据并在Tkinter窗口中展示
Access数据在Tkinter窗口展示实现方案
你现有pyodbc读取数据的逻辑已经可以正常拿到结果,不需要改动核心查询部分,只要把控制台打印的逻辑替换为Tkinter表格渲染即可。Tkinter内置的ttk.Treeview是做表格展示最方便的选择,无需额外安装第三方依赖,适配性稳定。
完整可运行代码
import pyodbc import tkinter as tk from tkinter import ttk # ---------------------- 读取Access数据部分 ---------------------- # 替换为你的实际数据库文件路径 db_path = r"C:\你的文件存储路径\数据库文件.ACCDB" # 替换为你要查询的实际表名 target_table = "目标数据表名" conn = pyodbc.connect( r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=' + db_path + ';' ) cursor = conn.cursor() cursor.execute(f'select * from {target_table}') # 自动提取查询结果的列名 columns = [col_info[0] for col_info in cursor.description] # 读取所有行数据 table_rows = cursor.fetchall() # 关闭数据库连接 cursor.close() conn.close() # ---------------------- Tkinter窗口渲染部分 ---------------------- root = tk.Tk() root.title("Access数据展示") root.geometry("900x500") # 初始窗口大小,可根据需要调整 # 配置横向、纵向滚动条 scroll_y = ttk.Scrollbar(root, orient="vertical") scroll_x = ttk.Scrollbar(root, orient="horizontal") # 初始化表格控件 data_table = ttk.Treeview( root, columns=columns, show="headings", # 隐藏默认的首列树状图标 yscrollcommand=scroll_y.set, xscrollcommand=scroll_x.set ) # 绑定滚动条和表格的滚动联动 scroll_y.config(command=data_table.yview) scroll_x.config(command=data_table.xview) # 循环设置每一列的标题和默认宽度 for col in columns: data_table.heading(col, text=col) data_table.column(col, width=150, anchor="center") # 列宽默认150px,内容居中 # 把读取到的所有行插入表格 for row in table_rows: data_table.insert("", "end", values=list(row)) # 排布控件位置,支持窗口缩放时表格自动适配大小 scroll_y.pack(side="right", fill="y") scroll_x.pack(side="bottom", fill="x") data_table.pack(fill="both", expand=True) root.mainloop()
注意事项
- 运行前如果没装pyodbc,执行命令
pip install pyodbc完成安装即可 - 数据库路径前加
r是为了避免Windows路径里的反斜杠触发转义错误,不要随意删除 - 如果某一列内容较长,可以单独调整对应列的
width参数,比如备注、地址类的列可以把宽度设为250以上 - 如果连接数据库时提示驱动不存在,检查本地Office的位数(32/64位),安装对应版本的Microsoft Access Database Engine驱动即可
- Treeview本身支持行选中、点击列头排序、单元格编辑等扩展功能,后续需要交互逻辑可以直接在这个代码基础上追加
内容的提问来源于stack exchange,提问作者Chakot
相关产品推荐
相关产品推荐

