|
【Python】Tkinter+Pandas实现窗口表格显示文章目录【Python】Tkinter+Pandas实现窗口表格显示相关代码运行环境操作过程1.Tkinter和Pandas库的安装2.新建项目以及配置相关库3.部分代码的编写4.运行结果以及完整代码展示相关代码运行环境电脑系统:Windows11Python版本:3.12.4使用的Python开发环境:PyCharmCommunityEdition2024.1操作过程1.Tkinter和Pandas库的安装首先需要确认是否已安装pip库,使用快捷键win+R,输入cmd打开终端,输入pip-V语句,如果出现如下显示,则代表pip已安装如果没有安装成功,会提示:“pip”不是内部或外部命令,也不是可运行的程序或批处理文件,在cmd中输入以下命令进行安装:py-mensurepip--upgradeTkinter库是python自带的,不需要额外安装,在cmd中输入以下命令进行Pandas库的安装:pipinstallpandas2.新建项目以及配置相关库本文使用PyCharm作为Python脚本开发环境,打开PyCharm,选择新建项目,输入项目名并选择项目存放地址。打开新建好的项目文件后,点击左上角文件->设置->新建的项目名->ython解释器,我们可以看到,其中的软件包中只有一个pip点击右上角添加解释器->添加本地解释器->Virtualenv环境,选择现有环境选择你python中的python.exe文件并应用,我们会发现,我们之前安装的库也出现在软件包一栏中,代表我们现在已经配置好我们所需的库3.部分代码的编写创建一个窗口,并将其命名为“excel”,并设置窗口位置以及大小window=tk.Tk()#新建窗口window.title('excel')#命名窗口window.geometry("600x500+200+150")#设置窗口位置以及大小,“宽x高+左边距+上边距”123在窗口内新建一个表格部分,并取出data中的数据,初始化表格以及设置表格列宽table=ttk.Treeview(window)#在窗口内新建表格table["columns"]=list(data.columns)table["show"]="headings"#获取data中的数据(逐行获取)data.fillna('',inplace=True)#初始化表格forcolumnintable["columns"]:table.column(column,width=120)#设置表格列宽12345678设置表格界面右侧方和下方的滚动条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')#设置水平方向的滚动条12345678实现表格水平方向和垂直方向的自适应,使得在拉伸窗口时表格边框可以跟随变化table.pack(expand=tk.YES,fill=tk.BOTH)#实现表格水平方向和垂直方向的自适应1填入表头以及其余数据forcolumnintable["columns"]:table.heading(column,text=column)#将表头数据填入表格forrowindata.itertuples(index=False):table.insert("","end",values=row)#将其余数据逐行填入表格123456加入表格刷新函数,使得当我们修改源表格文件时该窗口显示的表格内容也会有相应变化defrefresh():#表格刷新函数,刷新间隔为1000msforchildintable.get_children():table.delete(child)#删除表格中除表头外的内容data_1=pd.read_excel(address)#将表格数据读取至data中,支持本地文件系统或URL的“xls”和“xlsx”文件扩展名data_1.fillna('',inplace=True)#初始化表格forcolumn_1intable["columns"]:table.heading(column,text=column_1)#将表头数据填入表格forrow_1indata_1.itertuples(index=False):table.insert("","end",values=row_1)#将其余数据逐行填入表格window.after(1000,refresh)#1000ms后执行表格刷新(refresh)函数123456789101112131415164.运行结果以及完整代码展示右键运行python文件,得到的结果如下所示:完整代码如下:importwarningsimporttkinterastkimportpandasaspdfromtkinterimportttkwarnings.filterwarnings("ignore")defrefresh():#表格刷新函数,刷新间隔为1000msforchildintable.get_children():table.delete(child)#删除表格中除表头外的内容data_1=pd.read_excel(address)#将表格数据读取至data中,支持本地文件系统或URL的“xls”和“xlsx”文件扩展名data_1.fillna('',inplace=True)#初始化表格forcolumn_1intable["columns"]:table.heading(column,text=column_1)#将表头数据填入表格forrow_1indata_1.itertuples(index=False):table.insert("","end",values=row_1)#将其余数据逐行填入表格window.after(1000,refresh)#1000ms后执行表格刷新(refresh)函数#1window=tk.Tk()#新建窗口window.title('excel')#命名窗口window.geometry("600x500+200+150")#设置窗口位置以及大小,“宽x高+左边距+上边距”#2address="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类型#3table=ttk.Treeview(window)#在窗口内新建表格table["columns"]=list(data.columns)table["show"]="headings"#获取data中的数据(逐行获取)data.fillna('',inplace=True)#初始化表格forcolumnintable["columns"]:table.column(column,width=120)#设置表格列宽#4scrollbar_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)#实现表格水平方向和垂直方向的自适应#5forcolumnintable["columns"]:table.heading(column,text=column)#将表头数据填入表格forrowindata.itertuples(index=False):table.insert("","end",values=row)#将其余数据逐行填入表格#6window.after(1000,refresh)#1000ms后执行表格刷新(refresh)函数window.mainloop()#显示窗口界面12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
|
|