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中优化NumPy包使用性能的教程
Apr 23 Python
Python实现的递归神经网络简单示例
Aug 11 Python
python实现二叉查找树实例代码
Feb 08 Python
python 提取tuple类型值中json格式的key值方法
Dec 31 Python
Python爬取知乎图片代码实现解析
Sep 17 Python
python爬虫爬取笔趣网小说网站过程图解
Nov 18 Python
python利用百度云接口实现车牌识别的示例
Feb 21 Python
解决Jupyter无法导入已安装的 module问题
Apr 17 Python
python使用多线程+socket实现端口扫描
May 28 Python
Python使用lambda抛出异常实现方法解析
Aug 20 Python
Python importlib模块重载使用方法详解
Oct 13 Python
python编程实现清理微信重复缓存文件
Nov 01 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
MySQL GBK→UTF-8编码转换
2007/05/24 PHP
php设计模式之命令模式的应用详解
2013/05/21 PHP
php的declare控制符和ticks教程(附示例)
2014/03/21 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
2015/05/09 PHP
浅析Yii2中GridView常见操作
2016/04/22 PHP
thinkphp5.1框架模板赋值与变量输出示例
2020/05/25 PHP
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
2010/12/08 Javascript
JavaScript实现页面滚动图片加载(仿lazyload效果)
2011/07/22 Javascript
javascript实现单击和双击并存的方法
2014/12/13 Javascript
jQuery实现点击图片翻页展示效果的方法
2015/02/16 Javascript
包含中国城市的javascript对象实例
2015/08/03 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
2015/10/09 Javascript
Javascript实现的SHA-256加密算法完整实例
2016/02/02 Javascript
js实现定时进度条完成后切换图片
2017/01/04 Javascript
Vue键盘事件用法总结
2017/04/18 Javascript
详解使用React进行组件库开发
2018/02/06 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
基于jQuery使用Ajax动态执行模糊查询功能
2018/07/05 jQuery
Node.js 如何利用异步提升任务处理速度
2019/01/07 Javascript
vue实现跨域的方法分析
2019/05/21 Javascript
layui 实现table翻页滚动条位置保持不变的例子
2019/09/05 Javascript
Vuex中的Mutations的具体使用方法
2020/06/01 Javascript
python进程管理工具supervisor使用实例
2014/09/17 Python
python实现无证书加密解密实例
2014/10/27 Python
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
python操作excel的方法
2018/08/16 Python
Python XlsxWriter模块Chart类用法实例分析
2019/03/11 Python
python tornado修改log输出方式
2019/11/18 Python
pytorch中的自定义数据处理详解
2020/01/06 Python
料理师求职信
2014/01/30 职场文书
销售经理工作检讨书
2015/02/19 职场文书
幼儿园教师岗位职责
2015/04/02 职场文书
python 如何获取页面所有a标签下href的值
2021/05/06 Python
解决Pytorch修改预训练模型时遇到key不匹配的情况
2021/06/05 Python
Python编程根据字典列表相同键的值进行合并
2021/10/05 Python
python图像处理 PIL Image操作实例
2022/04/09 Python