免费建网站推广,南京展厅设计装修,wordpress首页弹窗,网站数据怎么更新目录
一、需求#xff1a;
二、思路#xff1a;
三、工具
四、设计过程
#xff08;一#xff09;根据需要导入相关的图形界面库
#xff08;二#xff09;创建图形窗口
#xff08;三#xff09;标签设计
#xff08;四#xff09;方法按钮设计
#xff0…目录
一、需求
二、思路
三、工具
四、设计过程
一根据需要导入相关的图形界面库
二创建图形窗口
三标签设计
四方法按钮设计
五输入框的设置
六创建文本框输出组件
七清除输出文本框内容方法
八初始化所需数据
九数据标记
十清除标记
五、转化为exe格式
六、结果 在编写该exe文件的时候首先需要知道需要那些工具以及思路和需求这样才能更好的解决整体设计以及调整方案。
一、需求
1. 选择excel表格文件进行指定字符所在行进行标记
2. 需要指定列的指定字符
3. 指定的excel子表格Sheet名称
4. 标记完成后清除标记防止上一次的标记未清除影响下一次的判断
5. 标记内容输入到文本窗口方便查看标记的内容不用打开excel表格
6. 清除文本框的内容有利于查看内容 二、思路
1. 首先设计GUI窗口和文本框
2. 设计相应的需求按钮
3. 相应标签与输入框的设计
4. 利用虚拟环境将GUI转化成exe格式
三、工具
整个过程的设计需要python的多种库与转化成exe格式的方法工具涉及到的如下
import tkinter
import os
import xlrd # 导入读取excel表格的xlrd库
import pandas as pd
from openpyxl import load_workbook # 导入表格
from openpyxl.styles import PatternFill # 用于标记
from tkinter import filedialog, dialog #打开文件pyinstaller #打包成exe文件的库
四、设计过程
一根据需要导入相关的图形界面库
整个过程我们需要窗口库、读取表格库、导入表格库、标记库、打开文件库
#导入图形窗口界面库
import tkinter
import os
import xlrd # 导入读取excel表格的xlrd库
import pandas as pd
from openpyxl import load_workbook # 导入表格
from openpyxl.styles import PatternFill # 用于标记
from tkinter import filedialog, dialog #打开文件库
二创建图形窗口
在创建图形窗口的过程中需要设计窗口的名字以及长宽具体的设计如下
#创建GUI图形窗口
def create_tk():window tkinter.Tk() #创建窗口window.title(数据筛选标记) #给图形窗口命名window.geometry(900x400) #设置图像窗口宽、高return window
这里使用了窗口中的title、geometry方法
三标签设计
整个过程中需要输入列、输入筛选字符、输入Sheet名、输入筛选表格路径、被标记内容输出
#标签设置
def set_label(window):tkinter.Label(window, text输入列).place(width80, height25, x20, y150) # “用户”文字标签tkinter.Label(window, text输入筛选字符).place(width100, height25, x20, y200)tkinter.Label(window, text输入sheet名).place(width80, height25, x20, y250)tkinter.Label(window, text输入带筛选表格路径).place(width120, height25, x20, y100)tkinter.Label(window, text被标记内容输出).place(width120, height25, x550, y10)
其中使用tkinter库的Label方法他的使用方法为依次输入窗口名、标签文本、标签长宽、标签位置
四方法按钮设计
方法按钮的设计是为了点击按钮执行某个方法这样能够简化我们的开发过程其中使用tkinter中Button方法依次添加窗口名、按钮文本、执行命令、按钮文本的长宽最后按钮的位置设置
#方法按钮
def method_button(window,entry1,entry2,entry3,entry4,text_widget):sheet_index, row, start_rowx, end_rowx, start_colx init()button11 tkinter.Button(window,text退出,commandlambda :window.destroy(),width3,height2) #相当于使用destroy方法button11.place(x250,y320,anchornw) #自由设置按钮位置button12 tkinter.Button(window,text打开待筛选表格文件,commandopen_file,width20,height2) #button12.place(x40,y10,anchornw) #自由设置按钮位置button13 tkinter.Button(window,text标记,command lambda:mark_cells(text_widget,row,entry3.get(),entry2.get(),int(entry1.get()),entry4.get()),width3,height2)button13.place(x50,y320,anchornw) #自由设置按钮位置button14 tkinter.Button(window, text清除标记,commandlambda: clear_mark(entry4.get(),entry3.get()),width6,height2)button14.place(x140, y320, anchornw) # 自由设置按钮位置button15 tkinter.Button(window, text清除,commandlambda: clear_print_text(text_widget),width3,height1)button15.place(x840, y8, anchornw) # 自由设置按钮位置
五输入框的设置
输入框的设置是为了方便整体需求的直接输入方便操作使用了tkinter库的Entry输入框方法
#输入框设置
def input_tk(window):entry1 tkinter.Entry(window,width20) #加show*属于加密行为entry1.place(x150,y150)entry2 tkinter.Entry(window,width20)entry2.place(x150,y200)entry3 tkinter.Entry(window,width20)entry3.place(x150,y250)entry4 tkinter.Entry(window,width20)entry4.place(x150,y100)return entry1 ,entry2,entry3,entry4
这里需要将输入框进行返回方便后面的使用
六创建文本框输出组件
此处为了将标记的内容输出在exe文件中做的设计方便使用者使用。其中使用tkinter的文本方法Text,依次输入高和宽以及输出窗口的位置
# 创建一个文本输出框组件
def print_text():text_widget tkinter.Text(height25, width80, yscrollcommandset)text_widget.place(x320, y40)scrollbar_y tkinter.Scrollbar(commandtext_widget.yview, orientvertical)scrollbar_x tkinter.Scrollbar(commandtext_widget.xview, orienthorizontal)text_widget.configure(yscrollcommandscrollbar_y.set, xscrollcommandscrollbar_x.set)scrollbar_y.pack(sideright, filly)scrollbar_x.pack(sidebottom, fillx)return text_widget
此处还使用了文本框滑动条Scrollbar这样为了解决内容过多时的查看。
七清除输出文本框内容方法
#清除文本框内容
def clear_print_text(text_widget):text_widget.delete(1.0, tkinter.END)
将六中返回的文本框使用在删除方法中使用delete方法来解决这个问题。
八初始化所需数据
# 初始化所需数据
def init():sheet_index 0 # 指定excel中的子表格row 0 # 初始行start_row 0 # 开始行end_row None # 结束行start_col 0 # 开始列return sheet_index ,row ,start_row ,end_row ,start_col
九数据标记
def mark_cells(text_widget,row ,sheet, str_type, col, file_path):df pd.read_excel(file_path, engineopenpyxl) #读取表格data_excel xlrd.open_workbook(file_path) # 打开excel表格table data_excel.sheet_by_name(sheet) # 通过索引获取表格中的子表格n_rows table.nrows # 获取该sheet中的有效行数n_cols table.ncols # 获取该sheet中的有效列数workbookB load_workbook(file_path)sheetB workbookB[sheet]for rowB in sheetB.iter_rows(1, n_rows, col, col): # 遍历表A每个单元格for cellB in rowB:valueB str(cellB.value) # 强制转换为字符串if str_type in valueB:fills PatternFill(start_colorFFFF00, end_colorFFFF00, fill_typesolid)row row 1for i in range(n_cols):sheetB.cell(row, i 1).fill fills# 读取被标记行内容row_contents df.iloc[row-2].tolist()# 在文本输出框中插入文本text_widget.insert(tkinter.END, 第%s行输出的内容\n%(row))text_widget.insert(tkinter.END ,str(row_contents)\n)else:row row 1workbookB.save(file_path)
使用PatternFill方法进行标记
十清除标记
#清除表格标记
def clear_mark(file_path,sheet):workbookB load_workbook(file_path)sheetB workbookB[sheet]for row in sheetB.iter_rows():for cell in row:if cell.fill:cell.fill PatternFill(start_colorFFFFFF, end_colorFFFFFF, fill_typesolid)workbookB.save(file_path)
清除标记则使用PatternFill方法将其中的颜色换成白色即可
五、转化为exe格式
python设计的GUI界面需要转化为exe格式才能更好的方便操作因此需要使用pyinstaller库则可以操作方法如下
pyinstaller -F test.py -w使用该命令的时候一定要在对应所需转化的.py文件目录下才可以。比如我的py文件在E:\python程序\数据筛选目录下因此在dos命中切换到对应的路径再进行使用pyinstaller方法将其转化为exe格式。 但是此种方法将会导致exe格式过大因此需要采取另外的方法进行解决我们采用创建windows虚拟环境来解决这个问题。
conda create -n 虚拟环境名字 python3.8 #根据自己所安装的版本创建虚拟环境
conda activate 虚拟环境名字我设置为Test_GUI #激活虚拟环境
conda deactivate #退出虚拟环境
1. 从开始菜单运行“Anaconda Prompt”出现的界面输入创建虚拟环境的指令。成功创建了一个名字为Test_GUI且基于python版本3.8的虚拟环境
2. 在创建过程中需要回复y/nYes再激活虚拟环境
3. 在该虚拟环境下安装所需库安装方法如下
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 库名称这里将下面的所有库进行安装
tkinter
xlrd # 导入读取excel表格的xlrd库
pandas
openpyxl # 导入表格
pyinstaller #打包成exe文件的库
4. 使用如下方法查看安装所需库是否完全安装好 创建好了之后在该虚拟环境下切换目录至E:\python程序\数据筛选输入如下命令
pyinstaller -F test.py -w 等待运行完毕即可得到exe文件较小的格式
六、结果
打包之后在你的dist中有一个exe文件打开即可打开展示结果如下