Python: tkinter实例改名小工具
1 #!/usr/bin/env python 2 #coding=utf-8 3 # 4 # 版权所有 2014 yao_yu (http://blog.csdn.net/yao_yu_126) 5 # 本代码以MIT许可协议发布 6 # 文件名批量加.xls后缀 7 # 2014-04-21 创建 8 # 9 10 import os 11 import tkinter as tk 12 from tkinter import ttk 13 14 15 16 version = '2014-04-21' 17 app_title = '文件名批量加后缀 Ver:' + version 18 19 listdir = os.listdir 20 isdir = os.path.isdir 21 isfile = os.path.isfile 22 path_join = os.path.join 23 24 #---------------------------- Object Visit ----------------------------# 25 def visit_directory_files(root, visitor): 26 for i in listdir(root): 27 i = path_join(root, i) 28 if isdir(i): 29 if visit_directory_files(i, visitor): 30 return True 31 elif isfile(i): 32 if visitor(i): 33 return True 34 35 #---------------------------- Visitor ----------------------------# 36 class ListVisitor(object): 37 def __init__(self, *visitors, terminate = True): 38 if (visitors 39 and isinstance(visitors, (list, tuple)) 40 and isinstance(visitors[0], (list, tuple))): 41 visitors = visitors[0] 42 self._visitors = list(visitors) 43 self._terminate = terminate 44 def __call__(self, *args, **kwdargs): 45 for visitor in self._visitors: 46 if visitor(*args, **kwdargs): 47 return self._terminate 48 def append(self, visitor): 49 assert(visitor) 50 self._visitors.append(visitor) 51 52 def get_screen_size(window): 53 return window.winfo_screenwidth(),window.winfo_screenheight() 54 55 def get_window_size(window): 56 return window.winfo_reqwidth(),window.winfo_reqheight() 57 58 def center_window(root, width, height): 59 screenwidth = root.winfo_screenwidth() 60 screenheight = root.winfo_screenheight() 61 size = '%dx%d+%d+%d' % (width, height, (screenwidth - width)/2, (screenheight - height)/2) 62 root.geometry(size) 63 64 class Application(object): 65 def __init__(self, master): 66 self.master = ttk.Frame(master) 67 self.master.pack(side = tk.TOP, expand = tk.YES, fill = tk.BOTH) 68 self.create_widgets() 69 70 def create_widgets(self): 71 master = self.master 72 master.columnconfigure(1, weight=1) 73 master.rowconfigure(2, weight=1) 74 self.targetdir = tk.StringVar() 75 self.targetdir.set('/Volumes/Data/Document/Test') 76 padx = 5 77 pady = 10 78 ttk.Label(master, text="操作目录").grid(row = 0, column = 0, stick = tk.E, padx = padx, pady = pady) 79 ttk.Entry(master, textvariable = self.targetdir).grid(row = 0, column = 1, stick = tk.EW, padx = padx) 80 commands = ttk.Frame(master) 81 commands.grid(row = 1, column = 0, columnspan = 2) 82 ttk.Button(commands, text="开始", command = self.onStart).pack(side = tk.LEFT) 83 ttk.Button(commands, text="退出", command = master.quit).pack(side = tk.LEFT) 84 85 self.status = tk.StringVar() 86 self.status.set('就绪') 87 master.rowconfigure(3, minsize = 160) 88 ttk.Label(master, textvariable = self.status, wraplength=600).grid(row = 3, column = 0, columnspan = 2, padx = padx, stick = tk.NSEW) 89 self.progress = ttk.Progressbar(master, maximum=100, orient=tk.HORIZONTAL, mode='determinate') 90 self.progress.grid(row = 4, column = 0, columnspan = 2, padx = padx, stick = tk.NSEW) 91 92 def onStart(self): 93 targetdir = self.targetdir.get().strip() 94 basename = os.path.basename(targetdir) 95 if os.path.isdir(targetdir): 96 listvisitor = ListVisitor(ProgressVisitor(self.progress), 97 self.StatusVisitor(), 98 FileLogVisitor(basename), 99 #FileRenameVisitor(basename), 100 ) 101 visit_directory_files(targetdir, listvisitor) 102 else: 103 self.status.set('目标目录不存在') 104 105 def StatusVisitor(self): 106 print_status = self.status.set 107 def __call__(file): 108 __call__.n += 1 109 print_status('%s,%s' % (__call__.n, file)) 110 __call__.n = 0 111 return __call__ 112 113 splitext = os.path.splitext 114 file_rename = os.rename 115 knownexts = dict.fromkeys(['.jpg', '.log', '.pdf', '.tif', '.xls', '.zip', '.rar']) 116 class FileRenameVisitor(object): 117 def __init__(self, file): 118 self.__fp = open('%s_%s_rename.txt' % (os.path.splitext(__file__)[0], file), 'w') 119 def __call__(self, file): 120 ext = splitext(file)[1].lower() 121 if ext not in knownexts: 122 file_rename(file, file + '.xls') 123 self.__fp.write('%s\n' % file) 124 def __del__(self): 125 self.__fp.close() 126 127 class FileLogVisitor(object): 128 def __init__(self, file): 129 self.__fp = open('%s_%s_all.txt' % (os.path.splitext(__file__)[0], file), 'w') 130 def __call__(self, file): 131 self.__fp.write('%s\n' % file) 132 def __del__(self): 133 self.__fp.close() 134 135 class ProgressVisitor(object): 136 COUNT = 202 137 def __init__(self, progress, count=COUNT): 138 self.progress = progress 139 if count and isinstance(count, int) and count > 0: 140 self.count = count 141 else: 142 self.count = self.COUNT 143 self.n = 1 144 def __call__(self, *args, **kwdargs): 145 self.n += 1 146 if self.n == self.count: 147 self.progress.step() 148 self.progress.update() 149 self.n = 1 150 def __del__(self): 151 self.progress['value'] = 0 152 153 154 if __name__ == '__main__': 155 root = tk.Tk() 156 root.title(app_title) 157 app = Application(root) 158 center_window(root, 600, 240) 159 tk.mainloop()
转载于:https://www.cnblogs.com/yaoyu126/p/Python_tkinter_rename_tool.html
Python: tkinter实例改名小工具相关推荐
- Python Tkinter窗口化Ping小工具 (Windows/Liux)
Python 3.5的一个窗口化小工具,定时ping列表中的服务器. 程序启动配置的两种方式 预定义:下方代码去掉iplist.update的注释即可. 格式为iplist.update({" ...
- python英语翻译-python制作英语翻译小工具代码实例
这篇文章主要介绍了python制作英语翻译小工具代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 用python爬虫可以制作英语翻译小工具.来 ...
- python点名代码_基于python tkinter的点名小程序功能的实例代码
基于python tkinter的点名小程序功能的实例代码,花名册,次数,窗口,未找到,初始化 基于python tkinter的点名小程序功能的实例代码 易采站长站,站长之家为您整理了基于pytho ...
- 【kimol君的无聊小发明】—用python写截屏小工具
[kimol君的无聊小发明]-用python写截屏小工具 前言 一.技术实现 1. 相关库 2. 定义窗口 3. 绘制工具条 4. 定义事件函数 二.后续改进 写在最后 前言 今天我看了一下自己的文件 ...
- Python——【自制搜索小工具】
哈喽,大家好丫,你们的小郭子又来啦 ~ 当自己电脑文件很多还有点乱,用电脑自带的搜索文件,效率有点低,憋担心,我们用Python自制一个搜索小工具就行了,嘻嘻嘻嘻 环境准备 解释器: Python 3 ...
- python制作一个桌面小工具
python实现一个桌面小工具,制作一个桌面的便签提醒工具 参考代码:https://github.com/cosven/memo 参考链接:https://www.jb51.net/article/ ...
- python剪刀石头布程序_使用Python Tkinter实现剪刀石头布小游戏功能
编写剪刀石头布游戏 让我们使用Python 3和Tkinter开发相同的游戏.我们可以将游戏命名为Rock-Paper-Scissors-Lizard-Spock. 规则和玩法 ock crushes ...
- python实现剪刀石头布_用Python Tkinter实现剪刀石头布小游戏的方法
用Python Tkinter实现剪刀石头布小游戏的方法 发布时间:2020-12-07 10:38:11 来源:亿速云 阅读:90 作者:小新 这篇文章将为大家详细讲解有关用Python Tkint ...
- python入门学习之小工具制作系列--01使用tkinter库封装(人生重开模拟器)小游戏
一.制作背景: 过年浏览csdn博文时,有看到其他博主的一篇人生重开模拟器的小游戏,将代码拷贝运行后看效果很好,非常有趣.于是就学习使用tkinter库将源代码封装,使其可以成为应用小游戏. 二.人生 ...
最新文章
- 关于华为的E180 3G 无线网卡在windows 7 上的驱动问题
- 机器学习基础专题:线性判别器
- python下载安装教程3.8.1-Linux安装Python 3.8.1
- 综合实例_管线综合支吊架施工实例赏析,工艺流程全面
- python网络通信编程实例_python网络编程之数据传输UDP实例分析
- 微型计算机组装实验报告虚拟,微型计算机组装与维护实训(附光盘)
- pygame 文字输入交互_pygame能接收用户的文本输入吗?
- tableview直接滚动至最后一行
- sql设置id自动增长_JDBC进阶(一):批处理与获取自增长列的值
- C++实现对数学基本运算表达式的解析
- Sublime Text : 创建工程
- cvpr2020 人脸检测与识别_Python人脸检测识别实例教程
- Html中锚点的使用【转】
- 基于vue的video播放组件的后续修改
- MFC开发wps演示
- 小甲鱼c语言版:八皇后问题解决思路
- [十二省联考2019]希望
- h3c s5500 ssh v5 配置_H3C S5500 V2基本配置及配置命令
- postman安装与使用
- oracle收款凭证做错月份,​上个月的银行凭证做错了怎么办
热门文章
- Python Django 常用命令:创建迁移文件/数据库建表/创建admin超级用户
- Python3 数据结构:列表List中的方法
- 浅析Java各种变量线程安全问题
- Highcharts JS去除Highcharts.com链接的方法
- oracle用户名无法登陆,sysdba却可以登陆
- 关闭输入流后,依然无法删除文件
- linux下安装虚拟天文馆,如何在Ubuntu 20.04、18.04中安装Stellarium 0.20.0虚拟天文馆
- SQL 新加字段查询窗口报错
- 静态资源跨域解决方案
- 创建azure服务器