首页 > Python资料 博客日记

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

2024-09-20 16:00:06Python资料围观42

Python资料网推荐【Python】Tkinter + Pandas实现窗口表格显示这篇文章给大家,欢迎收藏Python资料网享受知识的乐趣

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

版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐