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. openssl-1.1.0g reference

    include/openssl aes.h: struct aes_key_st { aes.h: unsigned long rd_key[4 * (AES_MAXNR + 1)]; aes.h: ...

  2. jqGrid合并单元格

    两个参数 /**合并单元格:合并指定 gridName表格的NoName 列,合并的标准是参考CellName+CellNameTwo列内单元格的值. * gridName :表格名称 * NoNam ...

  3. 20175226 2018-2019-2 《Java程序设计》第二周学习总结

    20175226 2018-2019-2 <Java程序设计>第二周学习总结 教材学习内容总结 基本数据类型与数组 标识符与关键字 标识符不能是关键字.true.false.null.且第 ...

  4. python3 字典(dictionary)(一)

    一.定义:是另一种可变容器模型,可存储任意类型对象:(也被称为关联数组或哈希表:存储的数据是没有顺序的) 语法为: d = {key1 : value1, key2 : value2 } #----- ...

  5. Wine中中文显示为错误的解决方案

    First u must download wqy-microhei.ttc font online (https://github.com/anthonyfok/fonts-wqy-microhei ...

  6. python 通过js控制滚动条拉取全文 通过psutil获取pid窗口句柄,通过win32gui使程序窗口前置 通过autopy实现右键菜单和另存为操作

    1.参考 利用 Python + Selenium 自动化快速截图 利用 Python + Selenium 实现对页面的指定元素截图(可截长图元素) 使用python获取系统所有进程PID以及进程名 ...

  7. eclipse下启动tomcat访问网址报404错误

    问题: 解决步骤 首先检查一遍自己tomcat的相关配置,如果无误,则继续下面的操作 1.打开server视图,双击tomcat进入编辑页面 选择其中的第二个选项,并且修改Server path中的内 ...

  8. python 3 爬取某小说网站小说,注释详细

    目标:每一个小说保存成一个txt文件 思路:获取每个小说地址(图一),进入后获取每章节地址(图二),然后进入获取该章节内容(图三)保存文件中.循环 效果图: 每一行都有注释,不多解释了 import ...

  9. XVII Open Cup named after E.V. Pankratiev. Eastern GP, Division 1

    A. Count The Ones $ans=b-c+1$. #include <stdio.h> using namespace std ; int a , b , c ; void s ...

  10. Python的numpy库中rand(),randn(),randint(),random_integers()的使用

    1.numpy.random.rand() 用法是:numpy.random.rand(d0,d1,…dn) 以给定的形状创建一个数组,并在数组中加入在[0,1]之间均匀分布的随机样本. 用法及实现: ...