生活中的每个细节,有些人习惯使用图像的方式做纪录;有些人更喜欢使用文字去做纪录。 那在资讯领域中呢? 有一群人就喜欢啃Raw data 所纪录出的log ....
Python 中有一个好用的module,logging,其可以将log 等级做分类,细则就随便google找找都有。 这次的重点则是,要怎麽把程序中随时印在console 中的print 资讯,导入到UI 元件中。
笔者打算用signal的形式直接去实作,如果对於使用callback有兴趣的朋友就另外去找其他文章来看罗.
使用工具
作法:
class LoggingHandler(QObject):
finished = Signal()
updated = Signal(str)
@QtCore.Slot()
def __init__(self):
super(LoggingHandler, self).__init__()
self.working = True
def work(self):
global v_logging
if self.working:
self.updated.emit(v_logging)
self.finished.emit()
self.thread3 = None
def runloggingTasks(self):
global v_logging
self.Logging = LoggingHandler()
self.thread3 = QThread()
self.thread3.started.connect(self.Logging.work)
self.Logging.updated.connect(self.updateText)
self.Logging.finished.connect(self.thread3.quit)
self.Logging.finished.connect(self.Logging.deleteLater)
self.Logging.moveToThread(self.thread3)
self.thread3.start()
v_logging = "log start"
[笔记]
(1) 笔者是使用v_logging 共用变数当成queue使用
(2) v_logging 可被用在任何放置print 的地方,笔者在这边是测试功能,所以直接放置在功能内
笔者存放log的UI元件是使用lineEdit
self.runloggingTasks()
效果:
执行後可以看到红色框框处多了log start 字样
结论:
网路上有使用logging module + handleer的形式做出来,但笔者在看了程序码後发现对方写得太复杂了,笔者只想简单实作就好。所以选择使用signal + slot + queue的形式来实作。
後记:
做一个新专案来学一种新的应用真的是很棒的形式,PySide 系列笔者还是会继续在铁人赛後继续钻研下去,因为真的很有趣。网路上找到的参考资料并不一定适合每一个人,唯有取经跟自干整合後才会变成自己的产物。
PS: 可惜自干纯手刻资料清洗工具的side project还没做完,因为这专案还在继续开发中,未来相关的分享会出现在其他地方吧。暂定是笔者即将开始撰写的medium。
<<: 简报版-第十一章-从网址看问题,短网址的风险?真实网域的辨别?
>>: 【後转前要多久】# Day30 Angular - Pipe 管道元件
阿嬷都看得懂的 CSS 收整与 DRY 策略 玫瑰即使换个名字,还是同样芬芳。 -莎士比亚 欢迎各位...
findall : 为寻找字串中所有可能符合格式的内容,回传list格式 compile格式 加了?...
K8s - Kubernetes Django 部署笔记 参考资料 Windows 7 安装Dock...
CSS3新增的目标选择器类型: 1.属性选择器 属性选择器可以根据元素特定属性来选择元素,这样就可以...
元件介绍 Progress circle 跟上一篇 Progress bar 一样是能够展示当前进度...