python3+tkinter实践历程(二)——基于tkinter的日志检索工具
系列文章目录
python3+tkinter实践历程(一)——基于requests与tkinter的API工具
python3+tkinter实践历程(二)——基于tkinter的日志检索工具
python3+tkinter实践历程(三)——基于requests与tkinter的模拟web登录工具
python3+tkinter实践历程(四)——模仿CRT完成基于socket通信与tkinter的TCP串口客户端
分享背景
①分享意图在于帮助新入门的朋友,提供思路,里面详细的注释多多少少能解决一些问题。欢迎大佬指点跟交流。
②2021年8月,开始陆续有需求制作一些工具,因为python语言跟tkinter工具相对简单,所以就基于这些做了好几个不同用处的工具。
③分享从完成的第一个工具开始分享,分享到最新完成的工具,对于tkinter的理解也从一开始的摸索入门,到后来逐渐熟练,完成速度也越来越快,所用到的tk的功能点也越来越多。
制作背景
用于分析日志有无出现目标关键字、有无出现刷屏分析。
最终功能
检查日志,实现搜索关键字、刷屏分析两个功能
代码详解
# -*- coding=utf-8 -*-
"""
1、输入指定文件名,就读取指定文件
2、全选,则读取所有后缀为log的文件
"""
import tkinter as tk
from tkinter import *
import threading
import os
from tkinter.filedialog import askdirectory, askopenfilenames
import difflib
class Application(tk.Frame):
def __init__(self, master=None):
tk.Frame.__init__(self, master)
self.grid()
self.check_kw = True # 是否检查关键字
self.check_rep = True # 是否检查刷屏
# 此两个为内置的一些关键字,及关键字对应的JRbug单号
self.kw = "a||b||c||d"
self.jr_id_kw = {'a': 'A-001', 'b': 'B-001', 'c': 'C-001', 'd': 'D-001'}
# 初始化时执行下面create_widgets函数构造出GUI界面
self.create_widgets() #
def create_widgets(self):
"""创建图形化界面"""
# 串口目录路径,该目录下的日志都会被搜索
tk.Label(self, text="日志目录路径").grid(row=0, column=0)
self.dir = tk.StringVar()
self.dir.set("")
self.log_dir = tk.Entry(self, textvariable=self.dir, width=35)
self.log_dir.grid(row=0, column=1)
tk.Button(self, text="路径选择", command=self.selectPath).grid(row=0, column=2)
# 串口文件,指定某个日志文件
tk.Label(self, text="日志文件路径").grid(row=0, column=4)
self.name = tk.StringVar()
self.name.set("")
self.log_name = tk.Entry(self, textvariable=self.name, width=40)
self.log_name.grid(row=0, column=5)
tk.Button(self, text="文件选择", command=self.selectName).grid(row=0, column=6)
# 搜索按钮
start_btn = tk.Button(self, text="开始检查日志", command=self.start_search_log).grid(row=0, column=9)
# 搜索关键字与刷屏分析的文字
tk.Label(self, text="搜索关键字(多个关键字用英文逗号(,)隔开)").grid(row=1, column=0, columnspan=2)
tk.Label(self, text="搜索结果")