基于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吧.没有任何含义 ...
随机推荐
- MySQL基本类型、操作
MySQL 前言(一些废话,可以不看) 为什么学习数据库呢,大家都知道,为了学习删库跑路,因为数据库在工作中起着至关重要的作用,只会写代码的是码农:学好数据库,基本能混口饭吃:在此基础上再学好操作系统 ...
- Blazor+Dapr+K8s微服务之状态管理
1 状态管理服务器端接口 1.1 添加Dapr.AspNetCore包 在DaprTest1.Server项目中添加Dapr.AspNetCore包,该包实现了ASP. ...
- NOIP 模拟 $12\; \text{简单的填数}$
题解 一个纯的贪心,被我搞成 \(dp\) 了,最后把错解删掉了,骗了 \(10pts\) 考虑如何贪心,设置一种二元组 \((x,l)\),\(x\) 表示当前值,\(l\) 表示当前最长连续长度. ...
- 物联网协议Coap协议介绍
COAP协议简介 Coap(Constrained Application Protocol)是一种在物联网世界的类web协议,它的详细规范定义在 RFC 7252.COAP名字翻译来就是" ...
- SpringBoot五步配置Mybatis
第一步:Maven里面添加mybatis的引用jar包: <!--mybatis--> <dependency> <groupId>org.mybatis.spri ...
- 后端开发应该掌握的Redis基础
转自:https://juejin.im/post/5d078cd6f265da1b8466e62c 在上一篇文章中,我们简单地讲了一下Redis的应用场景.安装.如何连接等比较基础的知识,那么在这篇 ...
- CrackMe-CFF Crackme #3
转载自:OllyDbg入门教程 我们先来运行一下这个 crackme(用 PEiD 检测显示是 Delphi 编的),界面如图: 这个 crackme 已经把用户名和注册码都输好了,省得我们动手^_^ ...
- JMeter结果树响应数据中文乱码
打开apache-jmeter-2.11\bin\jmeter.properties文件,搜索"encoding"关键字,找到如下配置: # The encoding to be ...
- 客户机与服务器TCP连接状态
客户机:
- ProjectEuler 005题
题目: 2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any ...