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实用技巧两则
Aug 29 Python
python实现简单温度转换的方法
Mar 13 Python
Python图形绘制操作之正弦曲线实现方法分析
Dec 25 Python
python学生管理系统代码实现
Apr 05 Python
python numpy 显示图像阵列的实例
Jul 02 Python
python 切换root 执行命令的方法
Jan 19 Python
Python字符串的一些操作方法总结
Jun 10 Python
通过PYTHON来实现图像分割详解
Jun 26 Python
Python数据处理篇之Sympy系列(五)---解方程
Oct 12 Python
Python彻底删除文件夹及其子文件方式
Dec 23 Python
Windows 下python3.8环境安装教程图文详解
Mar 11 Python
python 如何利用argparse解析命令行参数
Sep 11 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 中的面向对象编程:通向大型 PHP 工程的办法
2006/12/03 PHP
php仿ZOL分页类代码
2008/10/02 PHP
php中使用array_filter()函数过滤空数组的实现代码
2014/08/19 PHP
PHP sleep()函数, usleep()函数
2016/08/25 PHP
php封装的单文件(图片)上传类完整实例
2016/10/18 PHP
Symfony2针对输入时间进行查询的方法分析
2017/06/28 PHP
js下判断 iframe 是否加载完成的完美方法
2010/10/26 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
2013/11/21 Javascript
javascript调试过程中找不到哪里出错的可能原因
2013/12/16 Javascript
兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码
2014/10/14 Javascript
JavaScript语言对Unicode字符集的支持详解
2014/12/30 Javascript
js进行表单验证实例分析
2015/02/10 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
jQuery验证表单格式的使用方法
2017/01/10 Javascript
详解vuex之store源码简单解析
2019/06/13 Javascript
JavaScript中的this基本问题实例小结
2020/03/09 Javascript
Python搭建FTP服务器的方法示例
2018/01/19 Python
Django自定义manage命令实例代码
2018/02/11 Python
Python爬虫将爬取的图片写入world文档的方法
2018/11/07 Python
基于python操作ES实例详解
2019/11/16 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
2021/01/06 Python
结合CSS3的新特性来总结垂直居中的实现方法
2016/05/30 HTML / CSS
Web时代变迁及html5与html4的区别
2016/01/06 HTML / CSS
西尔斯百货官网:Sears
2016/09/06 全球购物
会计实习生工作总结的自我评价
2013/10/07 职场文书
西安交大自主招生自荐信
2014/01/27 职场文书
2014党员批评和自我批评思想汇报
2014/09/21 职场文书
结婚保证书(卖身契)
2015/02/26 职场文书
员工担保书范本
2015/09/22 职场文书
2016年暑期见闻作文
2015/11/25 职场文书
不知如何爱孩子,这些方法教会您
2019/08/06 职场文书
新手初学Java List 接口
2021/07/07 Java/Android
Nginx使用Lua模块实现WAF的原理解析
2021/09/04 Servers
苹果电脑mac os中货币符号快捷输入
2022/02/17 杂记