wxpython多线程防假死与线程间传递消息实例详解


Posted in Python onDecember 13, 2019

wxpython中启用线程的方法,将GUI和功能的执行分开。

网上关于python多线程防假死与线程传递消息是几年前的,这里由于wxpython和threading模块已经更新最新,因此给出最新修改代码,能在2017年最新版的python和模块中运行。

原来的publisher()和callafter都无法使用。

修改后的代码。

import time
import wx
from threading import Thread
from wx.lib.pubsub import pub
class TestThread(Thread):
def __init__(self):
#线程实例化时立即启动
Thread.__init__(self)
self.start()
def run(self):
#线程执行的代码
for i in range(101):
time.sleep(0.03)
wx.CallAfter(pub.sendMessage, "update", msg=i)
time.sleep(0.5)
class MyForm ( wx.Frame ):
def __init__( self, parent ):
wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = "www.OmegaXYZ.com", pos = wx.DefaultPosition, size = wx.Size( -1,-1 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )
self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )
gSizer2 = wx.GridSizer( 0, 3, 0, 0 )
self.m_button2 = wx.Button( self, wx.ID_ANY, "执行线程", wx.DefaultPosition, wx.DefaultSize, 0 )
gSizer2.Add( self.m_button2, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 5 )
self.m_staticText2 = wx.StaticText( self, wx.ID_ANY, "MyLabel", wx.DefaultPosition, wx.DefaultSize, 0 )
self.m_staticText2.Wrap( -1 )
gSizer2.Add( self.m_staticText2, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 5 )
self.m_gauge1 = wx.Gauge( self, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.GA_HORIZONTAL )
self.m_gauge1.SetValue( 0 )
gSizer2.Add( self.m_gauge1, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 5 )
self.SetSizer( gSizer2 )
self.Layout()
gSizer2.Fit( self )
self.Centre( wx.BOTH )
self.m_button2.Bind( wx.EVT_BUTTON, self.onButton )
pub.subscribe(self.updateDisplay, "update")
def updateDisplay(self, msg):
t = msg
if isinstance(t, int):#如果是数字,说明线程正在执行,显示数字
self.m_staticText2.SetLabel("%s%%" % t)
self.m_gauge1.SetValue( t )
else:#否则线程未执行,将按钮重新开启
self.m_staticText2.SetLabel("%s" % t)
self.m_button2.Enable()
def onButton( self, event ):
TestThread()
self.m_staticText2.SetLabel("线程开始")
event.GetEventObject().Disable()
if __name__ == "__main__":
app = wx.App()
MyForm(None).Show()
app.MainLoop()

wxpython多线程防假死与线程间传递消息实例详解

以上这篇wxpython多线程防假死与线程间传递消息实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
讲解Python中for循环下的索引变量的作用域
Apr 15 Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
May 02 Python
Python部署web开发程序的几种方法
May 05 Python
Python实现的中国剩余定理算法示例
Aug 05 Python
python中报错"json.decoder.JSONDecodeError: Expecting value:"的解决
Apr 29 Python
详细介绍Python进度条tqdm的使用
Jul 31 Python
Django rstful登陆认证并检查session是否过期代码实例
Aug 13 Python
TensorFlow学习之分布式的TensorFlow运行环境
Feb 05 Python
利用python实现逐步回归
Feb 24 Python
python的pip有什么用
Jun 17 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
Jun 28 Python
python中字典增加和删除使用方法
Sep 30 Python
python-web根据元素属性进行定位的方法
Dec 13 #Python
python Jupyter运行时间实例过程解析
Dec 13 #Python
Python time库基本使用方法分析
Dec 13 #Python
使用python 将图片复制到系统剪贴中
Dec 13 #Python
Python中使用gflags实例及原理解析
Dec 13 #Python
使用Python进行防病毒免杀解析
Dec 13 #Python
python 使用shutil复制图片的例子
Dec 13 #Python
You might like
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
php图形jpgraph操作实例分析
2017/02/22 PHP
Yii2 如何在modules中添加验证码的方法
2017/06/19 PHP
老生常谈PHP中的数据结构:DS扩展
2017/07/17 PHP
js实现ASP分页函数 HTML分页函数
2006/09/22 Javascript
js 异步处理进度条
2010/04/01 Javascript
js定时器(执行一次、重复执行)
2014/03/07 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
2014/10/16 Javascript
总结JavaScript的正则与其他语言的不同之处
2016/08/25 Javascript
从零学习node.js之模块规范(一)
2017/02/21 Javascript
JS获取月的第几周和年的第几周实例代码
2018/12/05 Javascript
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
vue 使用vant插件做tabs切换和无限加载功能的实现
2020/11/04 Javascript
[01:01]2020完美高校联赛(秋)西安落幕
2021/03/11 DOTA
Python标准库之循环器(itertools)介绍
2014/11/25 Python
python实现域名系统(DNS)正向查询的方法
2016/04/19 Python
python实现图片转字符小工具
2019/04/30 Python
django xadmin 管理器常用显示设置方式
2020/03/11 Python
Python打印不合法的文件名
2020/07/31 Python
python简单实现插入排序实例代码
2020/12/16 Python
friso美素佳儿官方海外旗舰店:荷兰原产原罐
2017/07/03 全球购物
Kangol帽子官网:坎戈尔袋鼠
2018/09/26 全球购物
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
小米官方旗舰店:Xiaomi
2020/08/07 全球购物
销售人员个人求职信
2013/09/26 职场文书
党章学习思想汇报
2014/01/14 职场文书
人事专员的岗位职责
2014/03/01 职场文书
教师师德承诺书
2014/03/26 职场文书
企业法人代表证明书
2014/09/27 职场文书
政府班子四风问题整改措施
2014/10/04 职场文书
离婚协议书范本
2015/01/26 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python
MySQL 数据丢失排查案例
2021/05/08 MySQL
python opencv通过4坐标剪裁图片
2021/06/05 Python
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python