zoukankan      html  css  js  c++  java
  • 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示例
  • 相关阅读:
    (元)黄公望---富春山居图(中国十大传世名画之八) 高清图下载
    Bloom Filter 原理与应用
    开始我的 JNI 入门吧
    javaScript的使用
    hash定义
    POJ3169 Layout(差分约束系统)
    青蛙的约会
    POJ 3414 Pots ( BFS , 打印路径 )
    你真的理解Java的this和super吗?
    十款优秀的在线JavaScript工具介绍
  • 原文地址:https://www.cnblogs.com/luoyc/p/12097971.html
Copyright © 2011-2022 走看看