1.导入tkinter模块
importTkinter
2.创建控件并启动
rootTkinter.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示例