tklog:基于tkinter的日志控件

2019年9月24日 / 41次阅读 / Last Modified 2019年11月12日
tkinter开源项目

日志(log)就像一杯拿铁,随时都需要!

用Python的tkinter编写GUI程序,再使用print来打印log,已经不方便了。GUI程序运行时,console窗口是关闭的。但是确实又需要各种log的记录和显示,我们一般的解决方案是使用tk.Text控件,或者高级一点,使用scrolledtext控件。我最近编写一个GUI工具就遇到了这个需求,为了在所有的地方,都能直接方便的logging,我用Python制作了tklog这个开源小控件。

项目地址:https://github.com/xinlin-z/tklog

tklog.py中包含两个类,tklog和winlog。tklog继承自scrolledtext控件(来自Python标准库),在此基础上增加了几个实用的功能,比如上下键,鼠标右键菜单,可选择导出全部到文件和copy所选内容到剪贴板。winlog集成tklog到一个Modaless Toplevel窗体,仅此而已,用于在没有log区域的GUI界面上,也能根据需要弹出一个不影响程序运行的winlog窗口。

log窗口一直保持readonly(只读),对外提供log,warning和error三个写日志的接口,文字颜色分别是默认的黑色,蓝色,红色。还有一个clean函数,用于清空日志区域。winlog有一个destroy函数,可以实现窗口自毁效果(比如,你需要在一个流程中记录日志,如果流程正常结束,此winlog窗口就自己销毁,如果流程异常了,winlog窗口就保留在屏幕上,但不影响程序继续运行)。

tklog的使用

代码和运行截图如下:

import tkinter as tk
from tklog import *

root = tk.Tk()
eblog = tklog(master=root)
eblog.pack()
eblog.log('first log...')
eblog.warning('this is a warning')
eblog.error('this is a error')
root.mainloop()
tklog的示例截图
tklog的示例截图

winlog的使用

代码和运行截图如下:

import tkinter as tk
from tklog import *

root = tk.Tk()
wlog = winlog(root, 'test win log')
wlog.log('first log...')
wlog.warning('this is a warning')
wlog.error('this is error')
root.mainloop()
winlog的示例截图
winlog的示例截图

winlog窗口背后的那个tk窗口,是root主窗口,winlog是一个弹窗而已。

python3 tklog.py

直接运行项目文件,你可以看到两个窗口,如下图效果,你也可以参考项目文件中的测试代码:

tklog项目测试代码运行效果
tklog项目测试代码运行效果

tklog项目小,代码简单,一共还不到100行。随手就可以用在别的项目上,非常方便。 欢迎使用和交流。

-- EOF --

本文链接:https://www.pynote.net/archives/1207

留言区

电子邮件地址不会被公开。 必填项已用*标注


前一篇:
后一篇:

More

麦新杰的Python笔记

Ctrl+D 收藏本页


©Copyright 麦新杰 Since 2019 Python笔记

go to top