基于python2.7 Tkinter 做一个小工具
1、源码:先写一个界面出来,放需要放入的点击事件的函数
# -*- coding:utf-8 -*-
import Tkinter
from Tkinter import * import ExcleCount #定义点击事件
def butonck():
input_path = entry_input.get().strip() ExcleCount.excleCount_passenger(input_path) top = Tkinter.Tk()
# 标题
top.title("excel计数工具")
# 窗口大小 长高用小写x隔开
top.geometry("400x200")
# 窗口基于屏幕的坐标 +x轴+y轴
top.geometry("+500+200")
# input_dir_text = Entry(top) # 创建lab标签 填写文件的输入路径
label_input = Label(top, text="excle文件路径:", fg="red", font=("宋体", 12))
# 显示lab标签 网格布局 sticky=W #左对齐 E为右对齐 默认为中间对齐
label_input.grid(row=0, column=0, padx=6, pady=10) # # 创建输入框,填写文件路径
entry_input = Entry(top, font=("宋体", 12)) # 显示输入框
entry_input.grid(row=0, column=1) # 创建lab标签 填写文件的输入路径
# label_out = Label(top, text="口岸文件路径:", fg="red", font=("宋体", 12))
# # 显示lab标签 网格布局 sticky=W #左对齐 E为右对齐 默认为中间对齐
# label_out.grid(row=1, column=0) # # 创建输入框,填写文件路径
# entry_out = Entry(top, font=("宋体", 12))
#
# # 显示输入框
# entry_out.grid(row=1, column=1) # 创建按钮
button = Button(top, text="确定", font=("宋体", 15), command=butonck)
# 显示按钮
button.grid(row=2, column=1, padx=6, pady=10)
# 进入消息循环
top.mainloop()
2、处理excle的某个功能函数
#!/usr/bin/env python
# -*- coding: utf-8 -*- import xlsxwriter
import os
import win32com.client as win32 def excleCount_passenger(file_path):
#定义输出的文件路径在原始文件的路径的同级目录新建一个outfile
file_list = []
out_file_path = os.path.join(os.path.abspath(os.path.dirname(file_path)+os.path.sep+"."), 'out_file')
if not os.path.exists(out_file_path):
os.makedirs(out_file_path)
for root, dirs, files in os.walk(file_path):
for name in files:
excle_file_name = os.path.join(file_path, os.path.join(root, name))
if name.endswith('.xls') or name.endswith('.xlsx'):
#print(excle_file_name)
file_list.append(excle_file_name) #打开excle excel = win32.Dispatch("Excel.Application")
excel.Visible = False
excel.DisplayAlerts = False xlBook = excel.Workbooks.Open(file_list[0])
sheetname = xlBook.Sheets(1).Name
# print ex sht = xlBook.Worksheets(sheetname) # sheet的行数
nrows = sht.UsedRange.Rows.Count # sheet的列数
ncols = sht.UsedRange.Columns.Count for j in range(1, ncols + 1):
if sht.Cells(1, j).Value == u'证件号码':
numOf = j set_data1 = set()
for i in range(2, nrows + 1): travel = sht.Cells(i, numOf).Value.decode('utf-8')
set_data1.add(travel)
print("set1",set_data1)
# xlBook 关闭读取excle进程
xlBook.Close(SaveChanges=1) # 关闭xlBook句柄 del excel # 这个地方很重要,杀死excel进程是这个地方起作用
# 打开excle excel = win32.Dispatch("Excel.Application")
excel.Visible = False
excel.DisplayAlerts = False xlBook = excel.Workbooks.Open(file_list[1])
sheetname = xlBook.Sheets(1).Name
# print ex sht = xlBook.Worksheets(sheetname) # sheet的行数
nrows = sht.UsedRange.Rows.Count # sheet的列数
ncols = sht.UsedRange.Columns.Count
for j in range(1, ncols + 1):
if sht.Cells(1, j).Value == u'证件号码':
numOf = j set_data2 = set()
for i in range(2, nrows + 1):
# print(sht.Cells(i, 10).Value,type(sht.Cells(i, 10).Value))
# if isinstance(sht.Cells(i, 10).Value, unicode):
travel = sht.Cells(i, numOf).Value.decode('utf-8')
set_data2.add(travel)
#print("set2",set_data2)
# xlBook 关闭读取excle进程
xlBook.Close(SaveChanges=1) # 关闭xlBook句柄 del excel # 这个地方很重要,杀死excel进程是这个地方起作用 end_list = []
for i in set_data1:
for j in set_data2:
if i == j:
end_list.append(i)
#print(end_list) workbook = xlsxwriter.Workbook(os.path.join(out_file_path, 'out.xlsx'))
worksheet = workbook.add_worksheet('sheet1')
headings = [u'去重交集数据'] # 设置表头 data = [end_list]
worksheet.write_row('A1', headings)
worksheet.write_column('A2', data[0])
workbook.close()
3、打包代码
pyhton2.7
前提第三方库已经安装 pip install pyinstaller 打包的整个路径不能放中文
pyinstaller -i Excel.ico -w -D excelTool.py ExcleCount.py -p C:\Python27\Lib\site-packages
上面的Excel.ico是图标文件图片 —D 参数后面第一个跟界面主函数 -p 加上环境依赖的第三方包
基于python2.7 Tkinter 做一个小工具的更多相关文章
- 【开源一个小工具】一键将网页内容推送到Kindle
最近工作上稍微闲点,这一周利用下班时间写了一个小工具,其实功能挺简单但也小折腾了会. 工具名称:Simple Send to Kindle Github地址:https://github.com/zh ...
- 使用PixiJS做一个小游戏
PixiJS PixiJS使用WebGL,是一个超快的HTML5 2D渲染引擎.作为一个Javascript的2D渲染器,Pixi.js的目标是提供一个快速的.轻量级而且是兼任所有设备的2D库. 官方 ...
- 用RecyclerView做一个小清新的Gallery效果 - Ryan Lee的博客
一.简介 RecyclerView现在已经是越来越强大,且不说已经被大家用到滚瓜烂熟的代替ListView的基础功能,现在RecyclerView还可以取代ViewPager实现Banner效果,当然 ...
- C# 基础知识系列- 17 实战篇 编写一个小工具(1)
0. 前言 这是对C# 基础系列的一个总结,现在我们利用之前学到的知识做一个小小的工具来给我们使用. 如果有看过IO篇的小伙伴,应该有印象.当时我提过一个场景描述,我们在平时使用系统的时候,经常会为了 ...
- 用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。
最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变 ...
- 提高Scrum站会效率的一个小工具
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:提高Scrum站会效率的一个小工具.
- Windows PE 第一章 熟悉OD(顺便破解一个小工具)
熟悉OD(顺便破解一个小工具) 上一节了解了OD的简单使用,这次就练习下,目标是破解一款小软件(入门练手用的,没有壳什么的). 首先我们来看一下这个小软件: 我们的目的是输入任何字符串都可以成功注册, ...
- 想用Electron做个小工具?这个或许是终极版
故事背景 之前在网上有看到很多小伙伴基于 electron 实现了非常多好用的桌面端工具,比如图床管理工具 PicGo,就专门做图床工具.也有一些其他的类似的小工具,比如 saladict-deskt ...
- 用MVC5+EF6+WebApi 做一个小功能(三) 项目搭建
一般一个项目开始之前都会有启动会,需求交底等等,其中会有一个环节,大讲特讲项目的意义,然后取一个高大上的项目名字,咱这是一个小功能谈不上项目,但是名字不能太小气了.好吧,就叫Trump吧.没有任何含义 ...
随机推荐
- 2021字节跳动校招秋招算法面试真题解题报告--leetcode19 删除链表的倒数第 n 个结点,内含7种语言答案
2021字节跳动校招秋招算法面试真题解题报告--leetcode19 删除链表的倒数第 n 个结点,内含7种语言答案 1.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. ...
- mingw+gcc 10.1下载
链接: https://pan.baidu.com/s/1Qyqv1PDppRJvgph9sBmwxw 提取码: fqkp
- 常见web中间件漏洞(五)weblogic漏洞
继续整理有关中间件漏洞思路(仅做简单思路整理,不是复现,复现请参考大佬们的长篇好文,会在文章中列举部分操作) WebLogic是Oracle公司出品的一个application server,确切的说 ...
- FTP三种访问模式
FTP匿名访问模式是比较不安全的服务模式,尤其在真实的工作环境中千万不要存放敏感的数据,以免泄露. vsftpd程序默认已经允许匿名访问模式,我们要做的就是开启匿名用户的上传和写入权限,写入下面的参数 ...
- 001 七层OSI参考模型
一.什么是七层OSI参考模型 OSI(Open System Interconnect),即开放式系统互连.是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考 ...
- nodejs 更改项目端口号的 方法
我这里是 koa2 项目 1.项目目录 serverConf.js 这里面配置端口 代码如下: const ServerConf= { ServicePort: 3036 }; module.expo ...
- git撤销已经push到远程仓库上的代码
具体方法,git命令:git reset --hard <commit_id>git push origin HEAD --force commit_id可以通过git命令:git log ...
- Lyndon 相关的炫酷字符串科技
浅谈从 Lyndon Words 到 Three Squares Lemma By zghtyarecrenj 本文包括:Lyndon Words & Significant Suffixes ...
- linux centos 网卡有关调试
本文章出至于设置固定IP不起作用,名称也无法修改 1.设置网卡配置文件 打开文件 vi /etc/sysconfig/network-scripts/ifcfg-enp8s0 把NAME.DEVICE ...
- Go版本依赖--伪版本
目录 1.简介 2. 什么是伪版本 3. 伪版本风格 4. 如何获取伪版本 1.简介 在go.mod中通常使用语义化版本来标记依赖,比如v1.2.3.v0.1.5等.因为go.mod文件通常是go命令 ...