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版本的读写锁操作方法
Apr 25 Python
Python网络编程 Python套接字编程
Sep 13 Python
Python实现破解猜数游戏算法示例
Sep 25 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
Jan 04 Python
python的pandas工具包,保存.csv文件时不要表头的实例
Jun 14 Python
python实现登录密码重置简易操作代码
Aug 14 Python
详解Python3 pandas.merge用法
Sep 05 Python
python 在sql语句中使用%s,%d,%f说明
Jun 06 Python
python能开发游戏吗
Jun 11 Python
Python机器学习之基础概述
May 19 Python
Pandas 数据编码的十种方法
Apr 20 Python
Python 一键获取电脑浏览器的账号密码
May 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
如何选购合适的收音机
2021/03/01 无线电
php miniBB中文乱码问题解决方法
2008/11/25 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
2013/11/14 PHP
免费手机号码归属地API查询接口和PHP使用实例分享
2014/04/10 PHP
php截取html字符串及自动补全html标签的方法
2015/01/15 PHP
php按单词截取字符串的方法
2015/04/07 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
PHP进程通信基础之信号
2017/02/19 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
2017/04/07 PHP
百度留言本js 大家可以参考下
2009/10/13 Javascript
asp.net+jquery滚动滚动条加载数据的下拉控件
2010/06/25 Javascript
JavaScript内核之基本概念
2011/10/21 Javascript
javascript学习笔记(九) js对象 设计模式
2012/06/19 Javascript
javascript 判断中文字符长度的函数代码
2012/08/27 Javascript
js判断某个方法是否存在实例代码
2015/01/10 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
jQuery实现智能判断固定导航条或侧边栏的方法
2016/09/04 Javascript
微信小程序下拉刷新界面的实现
2017/09/28 Javascript
nodejs+mongodb+vue前后台配置ueditor的示例代码
2018/01/02 NodeJs
js遍历添加栏目类添加css 再点击其它删除css【推荐】
2018/06/12 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
jQuery实现滑动星星评分效果(每日分享)
2019/11/13 jQuery
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
2019/11/21 Javascript
JS实现进度条动态加载特效
2020/03/25 Javascript
react 生命周期实例分析
2020/05/18 Javascript
Python中模拟enum枚举类型的5种方法分享
2014/11/22 Python
Python命令行参数解析模块getopt使用实例
2015/04/13 Python
Python中的匿名函数使用简介
2015/04/27 Python
python实现requests发送/上传多个文件的示例
2018/06/04 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
pycharm创建一个python包方法图解
2019/04/10 Python
Python写出新冠状病毒确诊人数地图的方法
2020/02/12 Python
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
乡镇领导班子四风对照检查材料
2014/09/27 职场文书
《绝招》教学反思
2016/02/20 职场文书
mysql对于模糊查询like的一些汇总
2021/05/09 MySQL