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使用Flask框架获取当前查询参数的方法
Mar 21 Python
Python3.x版本中新的字符串格式化方法
Apr 24 Python
安装Python的web.py框架并从hello world开始编程
Apr 25 Python
举例讲解Python面向对象编程中类的继承
Jun 17 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
May 27 Python
Python将json文件写入ES数据库的方法
Apr 10 Python
python输出带颜色字体实例方法
Sep 01 Python
python内置函数sorted()用法深入分析
Oct 08 Python
python 多维高斯分布数据生成方式
Dec 09 Python
Python龙贝格法求积分实例
Feb 29 Python
Python实现密钥密码(加解密)实例详解
Apr 26 Python
忆童年!用Python实现愤怒的小鸟游戏
Jun 07 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 url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
phpstudy默认不支持64位php的解决方法
2017/02/20 PHP
php及codeigniter使用session-cookie的方法(详解)
2017/04/06 PHP
PHP用户注册邮件激活账户的实现代码
2017/05/31 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
JavaScript去除空格的几种方法
2006/10/03 Javascript
jquery制作 随机弹跳的小球特效
2015/02/01 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
jQuery计算文本框字数及限制文本框字数的方法
2016/03/01 Javascript
JavaScript toUpperCase()方法使用详解
2016/08/26 Javascript
JS实现重新加载当前页面
2016/11/29 Javascript
微信小程序图片选择、上传到服务器、预览(PHP)实现实例
2017/05/11 Javascript
vee-validate vue 2.0自定义表单验证的实例
2018/08/28 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
2019/04/19 Javascript
vue在响应头response中获取自定义headers操作
2020/07/24 Javascript
python中requests模块的使用方法
2015/04/08 Python
python进程和线程用法知识点总结
2019/05/28 Python
Python range、enumerate和zip函数用法详解
2019/09/11 Python
pygame实现弹球游戏
2020/04/14 Python
Python实现GIF图倒放
2020/07/16 Python
css3动画效果抖动解决方法
2018/09/03 HTML / CSS
详解rem 适配布局
2018/10/31 HTML / CSS
HTML5实现获取地理位置信息并定位功能
2015/04/25 HTML / CSS
HTML5超文本标记语言的实现方法
2020/09/24 HTML / CSS
解释一下钝化(Swap out)
2016/12/26 面试题
人民调解员先进事迹材料
2014/05/08 职场文书
人事专员岗位职责说明书
2014/07/30 职场文书
关心下一代工作先进事迹
2014/08/15 职场文书
2014年教师节活动总结
2014/08/29 职场文书
学校运动会广播稿
2014/10/11 职场文书
房屋授权无偿使用证明
2014/11/29 职场文书
社区五一劳动节活动总结
2015/02/09 职场文书
2015年技术员工作总结
2015/04/10 职场文书
大学生逃课检讨书
2015/05/04 职场文书
小学运动会入场口号
2015/12/24 职场文书
纯 CSS 自定义多行省略的问题(从原理到实现)
2021/11/11 HTML / CSS