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的轻便web框架Bottle
Apr 08 Python
浅谈python正则的常用方法 覆盖范围70%以上
Mar 14 Python
Python实现修改IE注册表功能示例
May 10 Python
基于python绘制科赫雪花
Jun 22 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
Jul 04 Python
python ddt数据驱动最简实例代码
Feb 22 Python
python批量爬取下载抖音视频
Jun 17 Python
python实现飞机大战项目
Mar 11 Python
django 解决自定义序列化返回处理数据为null的问题
May 20 Python
JAVA SWT事件四种写法实例解析
Jun 05 Python
python selenium 获取接口数据的实现
Dec 07 Python
python可视化分析绘制带趋势线的散点图和边缘直方图
Jun 25 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--用万网的接口实现域名查询功能
2012/12/13 PHP
thinkphp获取栏目和文章当前位置的方法
2014/10/29 PHP
使用do...while的方法输入一个月中所有的周日(实例代码)
2016/07/22 Javascript
JavaScript制作简单分页插件
2016/09/11 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
2016/11/22 Javascript
详解angularjs 关于ui-router分层使用
2017/06/12 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
2018/02/22 Javascript
Vue中使用vee-validate表单验证的方法
2018/05/09 Javascript
vue-cli项目无法用本机IP访问的解决方法
2018/09/20 Javascript
详解React项目中碰到的IE问题
2019/03/14 Javascript
详解JavaScript的变量
2019/04/04 Javascript
微信小程序Flex布局用法深入浅出分析
2019/04/25 Javascript
vue实现五子棋游戏
2020/05/28 Javascript
vue如何搭建多页面多系统应用
2020/06/17 Javascript
[56:35]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第一局
2016/03/06 DOTA
[02:38]2018DOTA2亚洲邀请赛赛前采访-VGJ.T
2018/04/03 DOTA
教你用Type Hint提高Python程序开发效率
2016/08/08 Python
Python Unittest自动化单元测试框架详解
2018/04/04 Python
Python OpenCV利用笔记本摄像头实现人脸检测
2020/08/20 Python
Python socket模块方法实现详解
2019/11/05 Python
利用python实现AR教程
2019/11/20 Python
Python requests设置代理的方法步骤
2020/02/23 Python
Python基于Tkinter编写crc校验工具
2020/05/06 Python
全球独特生活方式产品和礼品购物网站:AHAlife
2018/09/18 全球购物
Tomcat Mysql datasource数据源配置
2015/12/28 面试题
季度思想汇报
2014/01/01 职场文书
运动会开幕式邀请函
2014/01/22 职场文书
参赛口号
2014/06/16 职场文书
购房协议书范本
2014/10/02 职场文书
思想品德评语大全
2014/12/31 职场文书
幼儿园辞职信
2015/05/13 职场文书
公司庆典主持词
2015/07/04 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
Python 中random 库的详细使用
2021/06/03 Python
opencv用VS2013调试时用Image Watch插件查看图片
2021/07/26 Python
CSS巧用渐变实现高级感背景光动画
2021/12/06 HTML / CSS