1、Excel行数统计工具

源代码

import xlrd
import tkinter as tk
import tkinter.filedialog # 计算一个工作簿中所有Sheet表的行数
def count_book(work_book):
workbook = xlrd.open_workbook(work_book) # 打开excel
sheets = workbook.sheet_names() # 读取所有sheet表,组成list列表
count = 0
for sheet in sheets:
sheet_name = workbook.sheet_by_name(sheet) # 实例化电子表对象sheet_name
count = count + sheet_name.nrows # sheet_name.nrows 单个sheet表的行数
return count class ExcelCountPad:
def __init__(self, root):
root.title("Excel 行数统计工具")
# root.iconbitmap('myicon.jpg') # 根窗口icon root_width = 560
root_height = 330
xscreen = root.winfo_screenwidth()
yscreen = root.winfo_screenheight()
xstart = (xscreen-root_width)/2
ystart = (yscreen-root_height)/2 root.geometry('%dx%d+%d+%d' % (root_width, root_height, xstart, ystart)) self.frm = tk.Frame(root)
self.frm.grid(row=0, column=0, padx='', pady='')
self.frm_left = tk.Frame(self.frm)
self.frm_left.pack(side='left', padx='')
self.frm_right = tk.Frame(self.frm)
self.frm_right.pack(side='right', padx='') self.btn_top = tk.Button(self.frm_left, text='上传Excel', command=self.upload_files)
self.btn_top.grid(row=0, column=0, ipadx='', ipady='')
self.btn_bottom = tk.Button(self.frm_left, text='开始统计', command=self.count_rows)
self.btn_bottom.grid(row=1, column=0, pady='', ipadx='', ipady='')
self.label1 = tk.Label(self.frm_left, text='')
self.label1.grid(row=2, column=0)
self.text1 = tk.Text(self.frm_right, width='', height='')
self.text1.grid(row=0, column=0) def upload_files(self):
selectFileNames = tk.filedialog.askopenfilenames(title='可选择1个或多个文件')#askopenfilename 1次上传1个;askopenfilenames1次上传多个
for selectFile in selectFileNames:
self.text1.insert(tk.END, selectFile+'\n')
self.text1.update() def count_rows(self):
all_count = 0
text_lines = self.text1.get(1.0, tk.END) # text.get方法
for line in text_lines.splitlines(): # splitlines分隔行
if line == '': # 空行处理
break
a_count = count_book(line)
all_count += a_count
self.label1['text'] = '共计:'+str(all_count)+' 行' # 1.改写label值:label1['text']='xx'; 2.str(int)int转str类型 root = tk.Tk()
excelCountPad = ExcelCountPad(root)
root.mainloop()

运行效果

2.手机号加密解密工具

import tkinter as tk
from jpype import *
import os root = tk.Tk() class App:
def __init__(self,root):
root.title("手机号加密解密工具")
root_width = 660
root_height = 430
xscreen = root.winfo_screenwidth()
yscreen = root.winfo_screenheight()
xstart = (xscreen-root_width)/2
ystart = (yscreen-root_height)/2
root.geometry('%dx%d+%d+%d' % (root_width, root_height, xstart, ystart)) self.frm_left = tk.Frame(root)
self.frm_left.grid(row=0, column=0, padx='', pady='', sticky=tk.E)
self.frm_middle = tk.Frame(root)
self.frm_middle.grid(row=0, column=1, sticky=tk.E)
self.frm_right = tk.Frame(root)
self.frm_right.grid(row=0, column=2, padx='', pady='', sticky=tk.E) self.label1 = tk.Label(self.frm_left, text='请输入手机号:', fg='blue', font=('微软雅黑', 11))
self.label1.grid(row=0, column=0, sticky=tk.W)
self.text_left = tk.Text(self.frm_left, width='', height='')
self.text_left.grid(row=2, column=0, padx='')
self.btn1 = tk.Button(self.frm_middle, text='加密>>', fg='red', font=('微软雅黑', 10), command=self.phone_encode)
self.btn1.grid(row=0, column=0)
self.btn2 = tk.Button(self.frm_middle, text='<<解密', fg='green', font=('微软雅黑', 10), command=self.phone_decode)
self.btn2.grid(row=1, column=0, pady='')
self.btn3 = tk.Button(self.frm_middle, text='清 空', font=('微软雅黑', 10), command=self.phone_clear)
self.btn3.grid(row=2, column=0,)
self.label3 = tk.Label(self.frm_right, text='请输入加密后字符串:', fg='blue', font=('微软雅黑', 11))
self.label3.grid(row=0, column=0, sticky=tk.W)
self.text_right = tk.Text(self.frm_right, width='', height='')
self.text_right.grid(row=1, column=0, padx='') def phone_encode(self):
# 读取text_left内容
self.text_left.update()
lines = self.text_left.get(1.0, tk.END)
self.text_right.delete('1.0', tk.END)
for line in lines.splitlines():
if line == '': # 空行处理
break
# 加密后放到text_right内容
self.text_right.insert(tk.END, javaClass.AESEncode(line)+'\n') def phone_decode(self):
# 读取text_right内容
self.text_right.update()
lines = self.text_right.get(1.0, tk.END)
self.text_left.delete('1.0', tk.END)
for line in lines.splitlines():
if line == '': # 空行处理
break
# 加密后放到text_right内容
self.text_left.insert(tk.END, javaClass.AESDncode(line)+'\n') def phone_clear(self):
#清空text中内容
self.text_left.delete(0.0, tk.END)
self.text_left.update()
self.text_right.delete(0.0, tk.END)
self.text_right.update() app = App(root) classpath = os.path.join(os.path.abspath('.'), './')
startJVM(getDefaultJVMPath(), "-ea", "-Djava.class.path=%s" %(classpath))
javaClass = JClass('Test') root.mainloop()
shutdownJVM()

注:调用的java类Test从开发代码中获取的,不方便公布

运行效果

Python_tkinter(5)_GUI工具的更多相关文章

  1. Unity3d入门 - 关于unity工具的熟悉

    上周由于工作内容较多,花在unity上学习的时间不多,但总归还是学习了一些东西,内容如下: .1 根据相关的教程在mac上安装了unity. .2 学习了unity的主要的工具分布和对应工具的相关的功 ...

  2. 细说前端自动化打包工具--webpack

    背景 记得2004年的时候,互联网开发就是做网页,那时也没有前端和后端的区分,有时一个网站就是一些纯静态的html,通过链接组织在一起.用过Dreamweaver的都知道,做网页就像用word编辑文档 ...

  3. 应用工具 .NET Portability Analyzer 分析迁移dotnet core

    大多数开发人员更喜欢一次性编写好业务逻辑代码,以后再重用这些代码.与构建不同的应用以面向多个平台相比,这种方法更加容易.如果您创建与 .NET Core 兼容的.NET 标准库,那么现在比以往任何时候 ...

  4. .NetCore中的日志(2)集成第三方日志工具

    .NetCore中的日志(2)集成第三方日志工具 0x00 在.NetCore的Logging组件中集成NLog 上一篇讨论了.NetCore中日志框架的结构,这一篇讨论一下.NetCore的Logg ...

  5. dll文件32位64位检测工具以及Windows文件夹SysWow64的坑

    自从操作系统升级到64位以后,就要不断的需要面对32位.64位的问题.相信有很多人并不是很清楚32位程序与64位程序的区别,以及Program Files (x86),Program Files的区别 ...

  6. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  7. 渗透测试工具BurpSuite做网站的安全测试(基础版)

    渗透测试工具BurpSuite做网站的安全测试(基础版) 版权声明:本文为博主原创文章,未经博主允许不得转载. 学习网址: https://t0data.gitbooks.io/burpsuite/c ...

  8. CorelDRAW X8 如何破解激活(附国际版安装包+激活工具) 2016-12-15

    之前有位搞平面的好友“小瘦”说CDR X8无法破解,只能用X7.呃……呃……呃……好像是的 其实CDR8难激活主要在于一个点“没有离线激活了,只可以在线激活”,逆天不是专供逆向的,当然没能力去破解,这 ...

  9. Web Api 入门实战 (快速入门+工具使用+不依赖IIS)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...

随机推荐

  1. ios9 safari currentTime audio bug

    var audio = document.createElement('audio') audio.src = 'https://ic-static.vipkidteachers.com/course ...

  2. vue源码分析之目录架构(一)

    compiler compiler 目录包含 Vue.js 所有编译相关的代码.它包括把模板解析成 ast 语法树,ast 语法树优化,代码生成等功能 core core 目录包含了 Vue.js 的 ...

  3. 浅谈z-index

    z-index使用条件 CSS3之前,z-index属性只有和定位元素在(postion不为static的元素)一起的时候才会有作用,但CSS3中flex盒子的子元素也可以设置z-index.理论上来 ...

  4. sass进阶—变量运算

    /*变量操作 (两个变量之间的运算符需要用空格隔开,否则会报错.)==,!= <,>,<=,>=+,-,*,/,% */ $width1:50px;$width2:100px; ...

  5. 饮冰三年-人工智能-Python-21 Python数据库MySql

    一:下载与安装 1:下载地址:https://dev.mysql.com/downloads/mysql/ 2:安装MySql 打开下载文件解压到指定文件目录.(我这里解压目录为D:\MySql\my ...

  6. postgre dinstinct on()的使用

    意思是DISTINCT ON ( expression [, …] )把记录根据[, …]的值进行分组,分组之后仅返回每一组的第一行. 需要注意的是,如果你不指定ORDER BY子句,返回的第一条的不 ...

  7. Spring设置定时任务时,关于执行时间的规则设置

    been需要在xml文件中进行配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE bean ...

  8. (五)Knockout template模版渲染

    基础 template绑定通过模板将数据render到页面.模板绑定对于构建嵌套结构的页面非常方便.默认情况, Knockout用的是流行的jquery.tmpl模板引擎.使用它的话,需要在安装页面下 ...

  9. 查看CentOS版本信息

    今天小编将给大家详细讲解查看CentOS版本信息的命令. (一) 查看已经安装的CentOS版本信息 1.cat /etc/issue 查看版本 cat  缩写concatenate  cat命令可以 ...

  10. 网络编程-Python高级语法-闭包

    什么叫闭包?通俗来说就是函数里嵌套函数,从表现形式来看,内部函数引用外部函数的作用域里的变量,那么内部函数就称为闭包 举例说明: 1.闭包=函数块+定义函数时的环境,inner就是函数块,x就是环境 ...