首页 > Python资料 博客日记
【Python】Tkinter + Pandas实现窗口表格显示
2024-09-20 16:00:06Python资料围观42次
【Python】Tkinter + Pandas实现窗口表格显示
文章目录
相关代码运行环境
电脑系统:Windows 11
Python版本:3.12.4
使用的Python开发环境:PyCharm Community Edition 2024.1
操作过程
1.Tkinter和Pandas库的安装
首先需要确认是否已安装pip库,使用快捷键win+R,输入cmd打开终端,输入pip -V语句,如果出现如下显示,则代表pip已安装
如果没有安装成功,会提示:“pip”不是内部或外部命令,也不是可运行的程序或批处理文件,在cmd中输入以下命令进行安装:
py -m ensurepip --upgrade
Tkinter库是python自带的,不需要额外安装,在cmd中输入以下命令进行Pandas库的安装:
pip install pandas
2.新建项目以及配置相关库
本文使用PyCharm作为Python脚本开发环境,打开PyCharm,选择新建项目,输入项目名并选择项目存放地址。
打开新建好的项目文件后,点击左上角文件->设置->新建的项目名->Python解释器,我们可以看到,其中的软件包中只有一个pip
点击右上角添加解释器->添加本地解释器->Virtualenv环境,选择现有环境
选择你python中的python.exe文件并应用,我们会发现,我们之前安装的库也出现在软件包一栏中,代表我们现在已经配置好我们所需的库
3.部分代码的编写
创建一个窗口,并将其命名为“excel”,并设置窗口位置以及大小
window = tk.Tk() # 新建窗口
window.title('excel') # 命名窗口
window.geometry("600x500+200+150") # 设置窗口位置以及大小,“宽x高+左边距+上边距”
在窗口内新建一个表格部分,并取出data中的数据,初始化表格以及设置表格列宽
table = ttk.Treeview(window) # 在窗口内新建表格
table["columns"] = list(data.columns)
table["show"] = "headings" # 获取data中的数据(逐行获取)
data.fillna('', inplace=True) # 初始化表格
for column in table["columns"]:
table.column(column, width=120)
# 设置表格列宽
设置表格界面右侧方和下方的滚动条
scrollbar_y = tk.Scrollbar(window, orient="vertical", command=table.yview)
table.configure(yscrollcommand=scrollbar_y.set)
scrollbar_y.pack(side='right', fill='y')
# 设置垂直方向的滚动条
scrollbar_x = tk.Scrollbar(window, orient="horizontal", command=table.xview)
table.configure(xscrollcommand=scrollbar_x.set)
scrollbar_x.pack(side='bottom', fill='x')
# 设置水平方向的滚动条
实现表格水平方向和垂直方向的自适应,使得在拉伸窗口时表格边框可以跟随变化
table.pack(expand=tk.YES, fill=tk.BOTH) # 实现表格水平方向和垂直方向的自适应
填入表头以及其余数据
for column in table["columns"]:
table.heading(column, text=column)
# 将表头数据填入表格
for row in data.itertuples(index=False):
table.insert("", "end", values=row)
# 将其余数据逐行填入表格
加入表格刷新函数,使得当我们修改源表格文件时该窗口显示的表格内容也会有相应变化
def refresh(): # 表格刷新函数,刷新间隔为1000ms
for child in table.get_children():
table.delete(child)
# 删除表格中除表头外的内容
data_1 = pd.read_excel(address) # 将表格数据读取至data中,支持本地文件系统或URL的“xls”和“xlsx”文件扩展名
data_1.fillna('', inplace=True) # 初始化表格
for column_1 in table["columns"]:
table.heading(column, text=column_1)
# 将表头数据填入表格
for row_1 in data_1.itertuples(index=False):
table.insert("", "end", values=row_1)
# 将其余数据逐行填入表格
window.after(1000, refresh) # 1000ms后执行表格刷新(refresh)函数
4.运行结果以及完整代码展示
右键运行python文件,得到的结果如下所示:
完整代码如下:
import warnings
import tkinter as tk
import pandas as pd
from tkinter import ttk
warnings.filterwarnings("ignore")
def refresh(): # 表格刷新函数,刷新间隔为1000ms
for child in table.get_children():
table.delete(child)
# 删除表格中除表头外的内容
data_1 = pd.read_excel(address) # 将表格数据读取至data中,支持本地文件系统或URL的“xls”和“xlsx”文件扩展名
data_1.fillna('', inplace=True) # 初始化表格
for column_1 in table["columns"]:
table.heading(column, text=column_1)
# 将表头数据填入表格
for row_1 in data_1.itertuples(index=False):
table.insert("", "end", values=row_1)
# 将其余数据逐行填入表格
window.after(1000, refresh) # 1000ms后执行表格刷新(refresh)函数
# 1
window = tk.Tk() # 新建窗口
window.title('excel') # 命名窗口
window.geometry("600x500+200+150") # 设置窗口位置以及大小,“宽x高+左边距+上边距”
# 2
address = "C:/Users/cloud/Desktop/datalin/data/蓝牙竞品参数一览表20240621.xlsx" # excel文件地址
# address = "C:/Users/cloud/Desktop/datalin/data/test4_excel.xls"
data = pd.read_excel(address) # 将表格数据读取至data中,支持本地文件系统或URL的“xls”和“xlsx”文件扩展名
# print(type(data)) # 查看data类型
# 3
table = ttk.Treeview(window) # 在窗口内新建表格
table["columns"] = list(data.columns)
table["show"] = "headings" # 获取data中的数据(逐行获取)
data.fillna('', inplace=True) # 初始化表格
for column in table["columns"]:
table.column(column, width=120)
# 设置表格列宽
# 4
scrollbar_y = tk.Scrollbar(window, orient="vertical", command=table.yview)
table.configure(yscrollcommand=scrollbar_y.set)
scrollbar_y.pack(side='right', fill='y')
# 设置垂直方向的滚动条
scrollbar_x = tk.Scrollbar(window, orient="horizontal", command=table.xview)
table.configure(xscrollcommand=scrollbar_x.set)
scrollbar_x.pack(side='bottom', fill='x')
# 设置水平方向的滚动条
table.pack(expand=tk.YES, fill=tk.BOTH) # 实现表格水平方向和垂直方向的自适应
# 5
for column in table["columns"]:
table.heading(column, text=column)
# 将表头数据填入表格
for row in data.itertuples(index=False):
table.insert("", "end", values=row)
# 将其余数据逐行填入表格
# 6
window.after(1000, refresh) # 1000ms后执行表格刷新(refresh)函数
window.mainloop() # 显示窗口界面
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj