【Python】Tkinter与Pandas结合实现窗口界面数据表格展示

【Python】Tkinter + Pandas实现窗口表格显示

文章目录

  • 【Python】Tkinter + Pandas实现窗口表格显示
  • 相关代码运行环境
  • 操作过程
  • 1.Tkinter和Pandas库的安装
  • 2.新建项目以及配置相关库
  • 3.部分代码的编写
  • 4.运行结果以及完整代码展示
  • 相关代码运行环境

    电脑系统:Windows 11
    Python版本:3.12.4
    使用的Python开发环境:PyCharm Community Edition 2024.1

    操作过程

    1.Tkinter和Pandas库的安装

    首先需要确认是否已安装pip库,使用快捷键win+R,输入cmd打开终端,输入pip -V语句,如果出现如下显示,则代表pip已安装

    已安装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()  # 显示窗口界面
    

    作者:汐xi_

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【Python】Tkinter与Pandas结合实现窗口界面数据表格展示

    发表回复