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 StringIO模块实现在内存缓冲区中读写数据
Apr 08 Python
Python中返回字典键的值的values()方法使用
May 22 Python
Python输出9*9乘法表的方法
May 25 Python
Python中线程编程之threading模块的使用详解
Jun 23 Python
Python中取整的几种方法小结
Jan 06 Python
Python如何快速上手? 快速掌握一门新语言的方法
Nov 14 Python
python抽取指定url页面的title方法
May 11 Python
python将.ppm格式图片转换成.jpg格式文件的方法
Oct 27 Python
用python3 urllib破解有道翻译反爬虫机制详解
Aug 14 Python
Python计算两个矩形重合面积代码实例
Sep 16 Python
python GUI库图形界面开发之PyQt5信号与槽基础使用方法与实例
Mar 06 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
Dec 27 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+Mysql+jQuery实现发布微博程序 jQuery篇
2011/10/08 PHP
php输出xml必须header的解决方法
2014/10/17 PHP
php+ajax登录跳转登录实现思路
2016/07/31 PHP
PHP实现读取文件夹及批量重命名文件操作示例
2019/04/15 PHP
动态控制Table的js代码
2007/03/07 Javascript
[原创]来自ImageSee官方 JavaScript图片浏览器
2008/01/16 Javascript
js 全兼容可高亮二级缓冲折叠菜单
2010/06/04 Javascript
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
2010/10/14 Javascript
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
javascript获取ckeditor编辑器的值(实现代码)
2013/11/18 Javascript
触屏中的JavaScript事件分析
2015/02/06 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
详解JavaScript对象和数组
2015/12/03 Javascript
使用Node.js给图片加水印的方法
2016/11/15 Javascript
浅析Jquery操作select
2016/12/13 Javascript
React创建组件的三种方式及其区别
2017/01/12 Javascript
vue项目上传Github预览的实现示例
2018/11/06 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
2019/01/15 Javascript
jQuery实现手风琴效果(蒙版)
2020/01/11 jQuery
深入理解redux之compose的具体应用
2020/01/12 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
Python中的tuple元组详细介绍
2015/02/02 Python
Python3安装Pymongo详细步骤
2017/05/26 Python
Python 修改列表中的元素方法
2018/06/26 Python
python+opencv实现霍夫变换检测直线
2020/10/23 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
2019/02/16 Python
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
python动态视频下载器的实现方法
2019/09/16 Python
HTML5 语义化结构化规范化
2008/10/17 HTML / CSS
教师求职推荐信范文
2013/11/20 职场文书
给水工程专业毕业生自荐信
2014/01/28 职场文书
市场营销个人求职信范文
2014/02/02 职场文书
乌鸦喝水教学反思
2014/02/07 职场文书
文员岗位职责范本
2014/03/08 职场文书
2015年科普工作总结
2015/07/23 职场文书