python-使用tkinter模块编写gui小工具

1.导入tkinter模块

import Tkinter

2.创建控件并启动

root = Tkinter.Tk()

root.title('设置窗口标题')  # 设置窗口标题

# 进入消息循环

root.mainloop()

3.在界面上添加常用组件 

a = Label(root, text='test_message')  #标签控件,显示文本

a.pack()  #将控件绑定到界面上

b = Entry(self.root, width=80)    #输入控件;用于显示简单的文本内容

b.get()  #获取界面上输入的内容


c = Button(self.root, text='点击', command=function_name)  #按钮控件;在程序中显示按钮,可以绑定一个方法,点击按钮就调用该方法

d = Listbox(self.root, width=150)  #列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户

d.insert(0, 'test_message')  #往列表框指定位置插入一个字符串

#其他控件请查看源文档

4.应用示例-自动清理日志的小工具

import os
import datetime
import time
from tkinter import *
import nnlog

log = nnlog.Logger('delete_file.log', when='D')


class Application():
    def __init__(self):
        self.root = Tk()
        self.createWidgets()

    def createWidgets(self):
        self.a= Label(self.root, text='输入待删除日志的路径')
        self.b= Label(self.root, text='请谨慎输入,将会删除该路径下符合要求的所有日志文件,包括文件夹下的')
        self.a.pack()
        self.b.pack()
        self.logPathInput = Entry(self.root, width=80)
        self.logPathInput.pack()

        self.c = Label(self.root, text='输入日志文件后缀,默认为.log')
        self.c.pack()
        self.logNameInput = Entry(self.root, width=80)
        self.logNameInput.pack()

        self.c = Label(self.root, text='输入多少天之前的日志,不输入则默认删除五天前的')
        self.c.pack()
        self.deleTimeInput = Entry(self.root, width=80)
        self.deleTimeInput.pack()
        self.alertButton = Button(self.root, text='开始删除', command=self.del_log_file)
        self.alertButton.pack()

        self.resText = Listbox(self.root, width=80)
        self.resText.pack()


    def del_log_file(self):
        """删除指定路径下超过X天的日志文件
        """
        path = self.logPathInput.get()
        del_time = self.deleTimeInput.get() if self.deleTimeInput.get() else 5
        log_name=self.logNameInput.get() if self.logNameInput.get() else '.log'
        if del_time and log_name and os.path.exists(path):
            self.resText.insert(0, '删除日志文件如下')
            self.resText.insert(0, '.............开始删除日志文件,退出请直接关闭工具..........')
            for cur_path, cur_dirs, cur_files in os.walk(path):
                for log_file in cur_files:
                    if log_file.endswith(log_name):
                        # file_time_stamp = log_file.split(".")[0].split("_")[1]
                        # 获取文件修改时间,时间戳格式
                        filePath = os.path.join(cur_path, log_file)
                        filetime_stamp = os.path.getmtime(filePath)
                        # 获取当前时间
                        today = datetime.datetime.now()
                        # 计算偏移量,前X天
                        offset = datetime.timedelta(days=-int(del_time))
                        print(offset)
                        # 获取想要的日期的时间,即前X天时间
                        re_date = (today + offset)
                        # 前3天时间转换为时间戳
                        re_date_unix = time.mktime(re_date.timetuple())
                        try:
                            if filetime_stamp <= re_date_unix:
                                self.resText.insert(2, filePath)
                                os.remove(filePath)
                                log.debug('删除文件成功:' + filePath)
                                print(filePath)

                        except:
                            continue
            self.resText.insert(1, '....................扫描完毕,等待下次运行...............')

            #10000ms后再次调用删除日志的函数
            self.root.after(86400000,self.del_log_file)
        else:
            self.resText.insert(0, 'error:输入的文件夹不存在')
        self.resText.insert(0, '******************************************************')

if __name__ == "__main__":
    app = Application()
    # 设置窗口标题:
    app.root.title('自动清理日志')
    # 主消息循环:
    app.root.mainloop()
tkinter示例

猜你喜欢

转载自www.cnblogs.com/luoyc/p/12097971.html