很久没有更新文章了,今天更新一个自己写的小工具
因工作需要,需要将一些图片和表格导出后分开存放在相应的目录,之前一直是手工创建并进行压缩太累,后面就想办法用python中的tkinter实现一个带界面的小工具,来解放自己生成目录的重复性工作。
可以实现的效果:根据当天日期自动到指定的目录中创建我们输入的数量的文件夹
使用的打包成exe文件的软件为:pyinstaller
先上一张效果图,有点丑,但是想要的功能基本都有了
1
使用方法:
路径是自己设定好的,然后输入要生成的文件夹数量,然后再点相应的按钮就可以了
下面放上源码,有需要的可以自己进行修改:
# -*- coding: utf-8 -*-
# @Time : 2019-11-22 2time0:26
# @Author : scyllake
import tkinter
from tkinter import messagebox
import os
import time
class App():
def __init__(self, master, width, height):
"""初始化窗口并居中显示"""
self.master = master
screenwidth = master.winfo_screenwidth()
screenheight = master.winfo_screenheight()
size = '%dx%d+%d+%d' % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)
# print(size)
master.geometry(size)
self.initWidgets()
def initWidgets(self):
# 图片存放目录
self.roo_path_Label = tkinter.Label(self.master, text='图片存放目录:', font=13)
self.roo_path_Label.grid(row=0, column=0,sticky=tkinter.E)
# 存放目录文本框
self.roo_path_EntryText = tkinter.StringVar()
self.roo_path_Entry = tkinter.Entry(self.master, width = 50, font=('微软雅黑', 13),textvariable= self.roo_path_EntryText)
self.roo_path_Entry.grid(row=0, column=1, sticky=tkinter.W)
self.roo_path_EntryText.set(r'C:\Users\admin\Desktop\采购订单')
# excel存放目录
self.roo_excel_path_Label = tkinter.Label(self.master, text='excel存放目录:', font=13)
self.roo_excel_path_Label.grid(row=1, column=0, sticky=tkinter.E)
# 存放目录文本框
self.roo_excel_path_EntryText = tkinter.StringVar()
self.roo_excel_path_Entry = tkinter.Entry(self.master, width=50, font=('微软雅黑', 13),textvariable=self.roo_excel_path_EntryText)
self.roo_excel_path_Entry.grid(row=1, column=1, sticky=tkinter.W)
self.roo_excel_path_EntryText.set(r'C:\Users\admin\Desktop\采购订单excel')
# 生成数量标签
self.gen_dir_num_Label = tkinter.Label(self.master, text='目录数量:', font=15)
self.gen_dir_num_Label.grid(row=2, column=0,sticky=tkinter.E)
# 生成数量文本框
self.gen_dir_num_Entry = tkinter.Entry(self.master, width=10, font=('微软雅黑', 13, 'bold'))
self.gen_dir_num_Entry.grid(row=2, column=1, sticky=tkinter.W)
# self.gen_dir_num_Entry.bind("<Return>", self.gen_button_click_enter)
# 生成按钮
self.gen_dir_button = tkinter.Button(text='生成图片目录', font=('微软雅黑', 12, 'bold'), foreground='red',command =self.genMdir)
self.gen_dir_button.grid(row=3, column=0)
self.gen_dir_button = tkinter.Button(text='生成excel目录', font=('微软雅黑', 12, 'bold'), foreground='red',command =self.genExcelMdir)
self.gen_dir_button.grid(row=3, column=1,sticky=tkinter.W)
# 生成结果
self.result_label = tkinter.Label(self.master, text='生成结果:', font=20)
self.result_label.grid(row=4, column=0,sticky=tkinter.E)
self.result_gen_label =tkinter.Label(self.master,font =('微软雅黑', 10, 'bold'),foreground='green')
self.result_gen_label.grid(row = 5,column = 0,sticky=tkinter.E )
# 生成图片目录
def genMdir(self):
self.root_path = self.roo_path_Entry.get()
if not len(self.root_path) == 0:
if not os.path.exists(self.root_path):
os.mkdir(self.root_path)
self.date1 = time.strftime("%Y-%m-%d", time.localtime())
if not os.path.exists(self.root_path + '\\' + self.date1 +'图片目录'):
os.mkdir(self.root_path + '\\' + self.date1 +'图片目录')
self.new_path = self.root_path + '\\' + self.date1 + '图片目录'
self.gen_nums = self.gen_dir_num_Entry.get()
if self.gen_nums.isdigit():
self.gen_nums = int(self.gen_nums)
self.dir_lists = []
for i in range(1,self.gen_nums+1):
self.dir_lists.append('{}第{}单图片'.format(self.date1[5:], i))
for dir in self.dir_lists:
if not os.path.exists(self.new_path+'\\'+dir):
os.mkdir(self.new_path+'\\'+dir)
self.result_gen_label['text']='目录创建完成'
else:
messagebox.showinfo(title='输入有误', message='输入的目录数量不是数字,请重新输入!')
else:
messagebox.showinfo(title='输入有误', message='目录未输入,请重新输入!')
# 生成excel目录
def genExcelMdir(self):
self.roo_excel_path = self.roo_excel_path_Entry.get()
if not len(self.roo_excel_path) == 0:
if not os.path.exists(self.roo_excel_path):
os.mkdir(self.roo_excel_path)
self.date1 = time.strftime("%Y-%m-%d", time.localtime())
if not os.path.exists(self.roo_excel_path + '\\' + self.date1 +'excel目录'):
os.mkdir(self.roo_excel_path + '\\' + self.date1 +'excel目录')
self.new_path = self.roo_excel_path + '\\' + self.date1 +'excel目录'
self.gen_nums = self.gen_dir_num_Entry.get()
if self.gen_nums.isdigit():
self.gen_nums = int(self.gen_nums)
self.dir_lists = []
for i in range(1, self.gen_nums + 1):
self.dir_lists.append('{}第{}单excel'.format(self.date1[5:], i))
for dir in self.dir_lists:
if not os.path.exists(self.new_path + '\\' + dir):
os.mkdir(self.new_path + '\\' + dir)
self.result_gen_label['text'] = 'excel目录创建完成'
else:
messagebox.showinfo(title='输入有误', message='输入的目录数量不是数字,请重新输入!')
else:
messagebox.showinfo(title='输入有误', message='目录未输入,请重新输入!')
# 此处原本绑定的是数量文件框输入后按enter键自动生成目录的功能,但由于一次生成2个,所以就取消了,可以根据自己实际情况来调整
# def gen_button_click_enter(self, event):
# self.genMdir()
if __name__ == '__main__':
root = tkinter.Tk()
App(root, 630, 180)
root.maxsize(1024, 768)
# root.minsize(700,600)
# 设置标题
root.title('生成图片目录和excel目录')
# 程序运行
root.mainloop()
网友评论