python GUI tkinter实战

news2024/11/28 12:49:43

在这里插入图片描述
筛选出列长度不为指定长度的列

from os import path
from tkinter import (BOTH, BROWSE, EXTENDED, INSERT, Button, Frame, Label,
                     Text, Tk, filedialog, mainloop, messagebox)
import matplotlib.pyplot as plt
import pandas as pd
from PIL import Image, ImageTk
from tkinter import Entry, StringVar, messagebox, Tk, mainloop
import dataframe_image as dfi
class CleanCode():
    def __init__(self) -> None:

        self.root = Tk()
        self.root.title("显示需要清洗代码列")

        self.root.geometry(f"{500}x{300}")

        self.frame = Frame(self.root).grid(row=0, column=0, rowspan=4)

        self.old_pic_frame = Frame(self.root).grid(row=3, column=0)
        self.new_pic_frame = Frame(self.root).grid(row=3, column=1)
        self.width = 10
        self.col = StringVar()
        self.col_length = StringVar()
        btn_open = Button(self.frame, text="打开excel文件", width=self.width, height=1, command=self.open_xlsx_file).grid(row=0, column=0)  #

        Label(self.frame, text="输入清洗的列", height=1, width=self.width).grid(row=1, column=0)
        Entry(self.frame,  textvariable=self.col).grid(row=1, column=1)

        Label(self.frame, text="列的正确长度", height=1, width=self.width).grid(row=1, column=2)
        Entry(self.frame, textvariable=self.col_length).grid(row=1, column=3)

        btn_process = Button(self.frame, text="筛选", width=self.width, height=1, command=self.process_all,).grid(row=2, column= 3, padx = 15)
        btn_reload = Button(self.frame, text="重载该文件", width=self.width, height=1, command=self.re_load).grid(row=0, column= 3, padx = 15)

    def re_load(self):
        global df
        df = pd.read_excel(self.filepath, keep_default_na=False)
        new_img = self.df2image(df)
        Label(self.old_pic_frame, image=new_img).grid(row=3, column=0)
        messagebox.showinfo('重载', '重载文件成功')

    def df2image(self,df):
        df_style = df.iloc[:50,].style.background_gradient()
        table_filename = "./test.png"
        dfi.export(obj=df_style, filename=table_filename, fontsize=30)
        # 加载图像到Tkinter PhotoImage对象
        new_img = Image.open(table_filename).convert("RGB")
        # new_img = Image.open(fp=self.filepath).convert("RGB")
        self.img_width, self.img_height = new_img.size
        print(self.img_width, self.img_height)
        self.rate = self.img_width / self.img_height
        # 如果图片高度过高则进行缩小
        if self.img_height > self.screenheight * 0.5:
            width = int(0.5 * self.screenwidth)
            height = int(width / self.rate)
            new_img = ImageTk.PhotoImage(
                image=new_img.resize(size=(width, height)))
        else:
            new_img = ImageTk.PhotoImage(new_img)
        return new_img
    
    def open_xlsx_file(self):
        global df
        global new_img
        self.screenwidth = self.root.winfo_screenwidth()
        self.screenheight = self.root.winfo_screenheight()
        self.root.geometry(f"{self.screenwidth}x{self.screenheight}+0+0")
        self.filepath = filedialog.askopenfilename(title='选择文件', filetypes=[('文件', ['*.xlsx', '*.xls', '*.csv'])])
        # messagebox.showinfo('已经选中文件', self.filepath)
        df = pd.read_excel(self.filepath, keep_default_na=False)
        new_img = self.df2image(df)
        Label(self.old_pic_frame, image=new_img).grid(row=3, column=0)

    def process_all(self):
        global df
        number_mode = r'(\d+)'
        normal_mode = r'([0-9a-zA-Z]+)'
        col_length_str =  self.col_length.get()
        col_length_list =  col_length_str.split(',')
        col = self.col.get()
        df['code_length'] = df.loc[:, col].astype(str).str.extract(normal_mode)
        df['code_length'].fillna( '',inplace=True)
        df['code_length'] = df['code_length'] .str.len()
        df['code_length'] = df['code_length'].astype(str)
        doubt_df =df[~df['code_length'].isin(col_length_list)]
        new_img = self.df2image(doubt_df)
        Label(self.new_pic_frame, image=new_img).grid(row=3, column=1)


if __name__ == "__main__":
    main = CleanCode()
    df = None
    new_img = None
    mainloop()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1168693.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

P3398 仓鼠找 sugar

Portal. LCA。 询问树上两条路径是否有交点。 画图发现无非两种情况: 发现一条路径的起点和终点的 LCA 经过另一条路径,是两路径相交的充要条件。 考虑如何判断这个 LCA 在不在路径上。若 d ( s , LCA ) d ( LCA , t ) d ( s , t ) d(s,\text{LCA…

ArmSom---SPI开发指南

1. 简介 RK3588从入门到精通本⽂主要介绍在Rockchip平台配置spi接口并且使用的方法开发板:ArmSoM-W3Kernel:5.10.160OS:Debian11 2. SPI接口概述 SPI(Serial Peripheral Interface),即串行外围设备接口&…

2023年辽宁省数学建模竞赛B题思路详细分析

摘要略,2023年辽宁省数学建模竞赛B题代码和论文已经完成,代码为全部3问代码,论文包括摘要、问题重述、问题分享、模型假设、符号说明、模型的建立和求解(问题1无监督聚类模型的建立和求解,问题二有监督分类预测模型的建…

基础课18——智能客服系统架构

1.基础设施层 基础设施主要包括以下几点: 1. 硬件设施:包括服务器、存储设备、网络设备等,这是整个系统运行的物理基础。 2. 软件设施:包括操作系统、数据库管理系统、自然语言处理(NLP)工具和机器学习算法等,这些是…

QT在线安装5.15之前的版本(下载速度飞快)

使用最新的QT在线安装器,安装QT版本时只能安装5.15以及之后的版本,安装QT5.15之前的版本只能通过离线安装的方式,离线安装后还要自己去配置QT,离线安装还有个问题的,后续维护比较麻烦,QT的维护工具还要自己…

美联储再度暂停升息:“比特币突破35,000美元!“

今天凌晨举行FOMC 利率会议的结果并不引起意外在意料之中,再次”暂停升息”,基准利率仍然在 5.25% 至 5.5% 区间。 市场反应出对于美联储暂停升息松了一口气,意味着当前的利率基本上是美联储的最高利率,要再继续加息的概率不大。 …

高浓度化工废水处理工艺是怎样的

高浓度化工废水处理工艺主要包括以下步骤: 预处理:通过物理、化学和生物等方法对废水进行预处理,以去除其中的悬浮物、油污、重金属等有害物质。常用的预处理方法包括沉淀、过滤、吸附、氧化等。化学氧化:利用氧化剂(…

体验SOLIDWORKS旋转反侧切除增强 硕迪科技

大家在设计中经常使用的旋转切除命令在solidworks2024版本中迎来了新的增强,添加了旋转反侧切除选项。在设计过程中不必修改复杂的草图即可切除掉我们不需要的部分。使设计工作更加方便快捷。 打开零部件后,点击键盘上的S键并输入旋转切除以搜索该命令&a…

C语言--输出1-100以内的素数

首先要有1-100以内的数字 for(int i1;i<100;i) 素数&#xff1a; 素数是指只能被1和自身整除的正整数。换句话说&#xff0c;素数是大于1的数&#xff0c;它除了1和它本身之外没有其他因数。例如&#xff0c;2、3、5、7、11、13等都是素数。然而&#xff0c;4、6、8、9等不…

浅述边缘计算场景下的云边端协同融合架构的应用场景示例

云计算正在向一种更加全局化的分布式节点组合形态进阶&#xff0c;而边缘计算是云计算能力向边缘侧分布式拓展的新触角。随着城市建设进程加快&#xff0c;海量设备产生的数据&#xff0c;若上传到云端进行处理&#xff0c;会对云端造成巨大压力。如果利用边缘计算来让云端的能…

多模态论文阅读之BLIP

BLIP泛读 TitleMotivationContributionModel Title BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation Motivation 模型角度&#xff1a;clip albef等要么采用encoder-base model 要么采用encoder-decoder model.…

Proteus仿真--1602LCD显示电话拨号键盘按键实验(仿真文件+程序)

本文主要介绍基于51单片机的LCD1602显示电话拨号键盘按键实验&#xff08;完整仿真源文件及代码见文末链接&#xff09; 仿真图如下 其中右下方12个按键模拟仿真手机键盘&#xff0c;使用方法同手机键一样&#xff0c;拨打手机号码则在液晶显示屏上显示对应的号码 仿真运行…

MySQL 数据脱敏方式盘点

对于企业而言&#xff0c;数据脱敏可以在数据共享或测试时用于保护敏感数据&#xff08;如信用卡&#xff0c;社保卡&#xff0c;地址等&#xff09;。通过对敏感数据进行脱敏处理&#xff0c;组织可以最大限度地降低数据泄露和未经授权访问的风险&#xff0c;同时仍能够使用真…

自己动手实现一个深度学习算法——五、误差反向传播法

文章目录 五、误差反向传播法1.计算图1&#xff09;概念2&#xff09;计算图3&#xff09;局部计算4&#xff09;计算图解题优点 2.链式法则1&#xff09;计算图的反向传播2)什么是链式法则3&#xff09;链式法则和计算图 3.反向传播1&#xff09;加法节点的反向传播2&#xff…

MySQL - Zero date value prohibited

问题: timestamp字段报Caused by: com.mysql.cj.exceptions.DataReadException: Zero date value prohibited 原因: timestamp字段存入了0值, 超出了最小值1900-01-01 00:00:00, 转Java对象的时候报错 解决: 1.修复或删除原数据 2. mysqlurl 中添加zeroDateTimeBehaviorconve…

软磁直流测试系统磁参量指标

软磁直流测试系统磁参量指标 测量条件&#xff1a;( 23 5 )℃ 环形试样应为薄壁环&#xff0c;外径与内径之比应小于1.1。 测试前环形试样应先退磁。 ① 采用标准样品测试。

Cell Reports | 表观组学和单细胞测序揭示在急性应激条件下FoxM1协调β细胞亚群的细胞分裂、蛋白质合成和线粒体活性

发表单位&#xff1a;瑞士分子健康科学研究所 期 刊 &#xff1a;Cell Reports&#xff08;IF:8.8&#xff09; 发表日期&#xff1a;2023年8月29日 研究技术&#xff1a;ATAC-seq、ChIP-seq 、RNA-seq、scRNA-seq&#xff08;爱基百客均可以提供&#xff09; 2023年8月…

2023NOIP A层联测23-涂鸦

有一面由 n m n\times m nm 个格子组成的墙&#xff0c;每个格子要么是黑色&#xff0c;要么是白色。你每次将会进行这样的操作&#xff1a;等概率随机选择一个位置 ( x , y ) (x,y) (x,y)&#xff0c;和一个颜色 c c c&#xff08;黑色或者白色&#xff09;&#xff08; 1…

docker 安装 minio (单体架构)

文字归档&#xff1a;https://www.yuque.com/u27599042/coding_star/qcsmgom7basm6y64 查询 minio 镜像 docker search minio拉取镜像 docker pull minio/minio创建启动 minio 容器 用户名长度至少为 3&#xff0c;密码长度至少为 8 docker run \ -p 9000:9000 \ -p 9090:909…

第6天:信息打点-Web架构篇amp;域名amp;语言amp;中间件amp;数据库amp;系统amp;源码

第6天&#xff1a;信息打点-Web架构篇&域名&语言&中间件&数据库&系统&源码 #知识点&#xff1a; 1、打点-Web架构-语言&中间件&数据库&系统等2、打点-Web源码-CMS开源&闭源售卖&自主研发等 开源&#xff1a;可以上网搜索&#x…