tkinter带界面实现指定目录生成器

2019-12-26 17:44:58 浏览数 (1)

很久没有更新文章了,今天更新一个自己写的小工具

因工作需要,需要将一些图片和表格导出后分开存放在相应的目录,之前一直是手工创建并进行压缩太累,后面就想办法用python中的tkinter实现一个带界面的小工具,来解放自己生成目录的重复性工作。

可以实现的效果:根据当天日期自动到指定的目录中创建我们输入的数量的文件夹
使用的打包成exe文件的软件为:pyinstaller

先上一张效果图,有点丑,但是想要的功能基本都有了

1

使用方法:

路径是自己设定好的,然后输入要生成的文件夹数量,然后再点相应的按钮就可以了 下面放上源码,有需要的可以自己进行修改:

代码语言:javascript复制
# -*- 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:UsersadminDesktop采购订单')

        # 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:UsersadminDesktop采购订单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()

0 人点赞