WxPython 4.0.4多线程访问UI

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: WxPython 4.0.4多线程访问UI

最开始做框架的时候的需求就是多线程访问UI,以前在.NET WPF使用MVVM和数据驱动很容易做到,在JavaSwing中使用另类的观察者模式也实现了。在WxPython中使用观察者模式直接程序崩溃,于是乎仔细的研究了一下发现使用wx.CallAfter()可以实现。

         首先在类中引入

import wx

from wx.lib.pubsub import pub

from threading import Thread

在线程中实现wx.CallAfter(),wx.CallAfter()使用pub将消息推送给实现类。实现方法将日志或者变化的数据推送给UI就可以了。思路很简单,具体看一下我在toolkit-frame中实现的日志模块。一边向磁盘写日志,一边将日志写到UI上。

对应包的版本WxPython4.0.4 Python3.7使用的IDE是Pycharm

image

updateDisplay方法在实现类中实现即可,在我框架里面是MainView中实现,具体代码如下:

image


LogThread类在base层的BaseFrame.py里面。

updateDisplay()方法在view层MainView.py里面。

         如果不进行二次封装可以在能够引用LogThread类的地方进行写日志,日志都会在UI上显示。来个截图看看效果。

image

控制台输出和UI上的日志同步哦。这个要是GIT图就更好了。。。

注:from wx.lib.pubsub import pub这个引入在wxpython中已经过期,windows使用

from pubsub import pub即可解决过期问题,但是在MACOS上不好用。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
缓存 安全 Java
【JavaSE专栏78】线程同步,控制多个线程之间的访问顺序和共享资源的安全性
【JavaSE专栏78】线程同步,控制多个线程之间的访问顺序和共享资源的安全性
122 0
|
SQL 分布式计算 数据安全/隐私保护
如何杜绝 spark history server ui 的未授权访问? 1
如何杜绝 spark history server ui 的未授权访问?
|
29天前
|
监控 Kubernetes Java
阿里面试:5000qps访问一个500ms的接口,如何设计线程池的核心线程数、最大线程数? 需要多少台机器?
本文由40岁老架构师尼恩撰写,针对一线互联网企业的高频面试题“如何确定系统的最佳线程数”进行系统化梳理。文章详细介绍了线程池设计的三个核心步骤:理论预估、压测验证和监控调整,并结合实际案例(5000qps、500ms响应时间、4核8G机器)给出具体参数设置建议。此外,还提供了《尼恩Java面试宝典PDF》等资源,帮助读者提升技术能力,顺利通过大厂面试。关注【技术自由圈】公众号,回复“领电子书”获取更多学习资料。
|
7月前
|
前端开发 JavaScript
零基础学 Vue + Element UI 第01步 —— 搭建开发环境、创建项目、修改默认模板、启动项目、访问项目
零基础学 Vue + Element UI 第01步 —— 搭建开发环境、创建项目、修改默认模板、启动项目、访问项目
100 1
|
8月前
|
Dart Serverless Android开发
Flutter 单线程模型保证UI运行流畅
Flutter 单线程模型保证UI运行流畅
109 0
|
JSON Java 数据格式
【异常处理】关于访问swagger-ui报错java.lang.NumberFormatException: For input string: ““的解决方案总结
【异常处理】关于访问swagger-ui报错java.lang.NumberFormatException: For input string: ““的解决方案总结
404 0
|
9月前
|
Java
【专栏】Java多线程中,锁用于控制共享资源访问,确保数据一致性和正确性,锁是什么意思,有哪些分类?
【4月更文挑战第28天】Java多线程中,锁用于控制共享资源访问,确保数据一致性和正确性。本文探讨锁的概念、作用及分类:乐观锁与悲观锁、自旋锁与适应性自旋锁、公平锁与非公平锁、可重入锁和读写锁。使用锁需注意避免死锁、合理选择锁粒度及性能优化。理解锁有助于提升多线程编程的效率和稳定性。
124 0
|
9月前
|
算法 安全 Unix
【C++ 20 信号量 】C++ 线程同步新特性 C++ 20 std::counting_semaphore 信号量的用法 控制对共享资源的并发访问
【C++ 20 信号量 】C++ 线程同步新特性 C++ 20 std::counting_semaphore 信号量的用法 控制对共享资源的并发访问
230 0
|
分布式计算 Hadoop 大数据
如何杜绝 spark history server ui 的未授权访问? 2
如何杜绝 spark history server ui 的未授权访问?
|
安全 调度 Python
【从零学习python 】80.线程访问全局变量与线程安全问题
【从零学习python 】80.线程访问全局变量与线程安全问题
132 0

热门文章

最新文章