国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Python:tkinter實例改名小工具

2019-11-14 17:47:43
字體:
來源:轉載
供稿:網友
  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.set107         def __call__(file):108             __call__.n += 1109             print_status('%s,%s' % (__call__.n, file))110         __call__.n = 0111         return __call__112 113 splitext = os.path.splitext114 file_rename = os.rename115 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 = 202137     def __init__(self, progress, count=COUNT):138         self.progress = progress139         if count and isinstance(count, int) and count > 0:140             self.count = count141         else:142             self.count = self.COUNT143         self.n = 1144     def __call__(self, *args, **kwdargs):145         self.n += 1146         if self.n == self.count:147             self.progress.step()148             self.progress.update()149             self.n = 1150     def __del__(self):151         self.progress['value'] = 0152         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()

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 清水县| 桦南县| 安福县| 乌兰察布市| 兴安盟| 怀安县| 隆德县| 利川市| 松桃| 嵩明县| 隆化县| 通化市| 珲春市| 营山县| 仁怀市| 冕宁县| 嘉祥县| 上饶县| 新泰市| 深州市| 九龙坡区| 北海市| 顺昌县| 达州市| 台东县| 远安县| 涿州市| 尖扎县| 宜都市| 渑池县| 镇宁| 肃南| 古交市| 宁德市| 平遥县| 新竹县| 澄迈县| 海城市| 万载县| 金湖县| 青浦区|