tklog:基于tkinter的日志控件

2019年9月24日 / 648次阅读 / Last Modified 2020年6月23日
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所选内容到剪贴板,以及清空这个log区域。winlog继承tklog到一个Modaless Toplevel窗体,并在此基础上增加了一点点不同的细节,比如在没有交点的时候窗口半透明,以及设置topmost属性。winlog可以用于在没有log区域的GUI界面上,也能根据需要弹出一个不影响程序运行的winlog窗口。

log窗口一直保持readonly(只读),以便规避因为不小心的操作而影响的log内容,你可以在查看log内容的时候,随便由着性子虐你的鼠标或键盘!

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

tklog和winlog,可以实现插入图片的功能,接口是png和gif。暂不支持jpg(要支持的话,就需要用到python第三方库,我对此有一点意见)。另外,一个已知的问题是,插入的gif不会动,只会显示出gif的第1帧。

运行我的测试代码:

$ python3 tklog.py

你会看到这样的效果(Ubuntu桌面):

tklog的运行效果
tklog的运行效果

对我来说,tklog是个很handy的工具,希望您也能喜欢。

-- EOF --

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

留言区

《tklog:基于tkinter的日志控件》有1条留言

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

  • 麦新杰

    今天同事请了一杯无糖拿铁,可惜他不是程序员... [回复]


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top