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模拟登录百度代码分享(获取百度贴吧等级)
Dec 27 Python
整理Python最基本的操作字典的方法
Apr 24 Python
Django中几种重定向方法
Apr 28 Python
Python合并两个字典的常用方法与效率比较
Jun 17 Python
Python实现数据结构线性链表(单链表)算法示例
May 04 Python
python lambda表达式在sort函数中的使用详解
Aug 28 Python
python匿名函数的使用方法解析
Oct 10 Python
python实现二分类的卡方分箱示例
Nov 22 Python
Jupyter notebook运行Spark+Scala教程
Apr 10 Python
详解在Python中使用Torchmoji将文本转换为表情符号
Jul 27 Python
python从PDF中提取数据的示例
Oct 30 Python
在终端启动Python时报错的解决方案
Nov 20 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
重置版战役片段
2020/04/09 魔兽争霸
深入php var_dump()函数的详解
2013/06/05 PHP
ThinkPHP自动完成中使用函数与回调方法实例
2014/11/29 PHP
JavaScript CSS修改学习第六章 拖拽
2010/02/19 Javascript
精通JavaScript 纠正 cleanWhitespace函数
2010/03/11 Javascript
JavaScript中的排序算法代码
2011/02/22 Javascript
js中parseFloat(参数1,参数2)定义和用法及注意事项
2013/01/27 Javascript
js创建数组的简单方法
2016/07/27 Javascript
Vue组件选项props实例详解
2017/08/18 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
2018/08/14 Javascript
微信小程序学习笔记之目录结构、基本配置图文详解
2019/03/28 Javascript
解析vue、angular深度作用选择器
2019/09/11 Javascript
[58:37]Serenity vs Fnatic 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
[01:15]PWL S2开团时刻第二期——他们杀 我就白给
2020/11/25 DOTA
Python3里的super()和__class__使用介绍
2015/04/23 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
pandas把所有大于0的数设置为1的方法
2019/01/26 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
2019/07/22 Python
python中执行smtplib失败的处理方法
2020/07/01 Python
jupyter notebook 写代码自动补全的实现
2020/11/02 Python
Python创建自己的加密货币的示例
2021/03/01 Python
基于CSS3实现立方体自转效果
2016/03/01 HTML / CSS
农行实习自我鉴定
2013/09/22 职场文书
公司行政经理岗位职责
2013/12/24 职场文书
课程设计心得体会
2013/12/28 职场文书
DIY手工制作经营店创业计划书
2014/02/01 职场文书
党员干部公开承诺书
2014/03/26 职场文书
《天安门广场》教学反思
2014/04/23 职场文书
公安学专业求职信
2014/07/27 职场文书
民主生活会对照检查材料
2014/09/22 职场文书
2015年教师党员公开承诺书
2015/01/22 职场文书
管理失职检讨书范文
2015/05/05 职场文书
可怜妈妈观后感
2015/06/09 职场文书
工作经历证明范本
2015/06/15 职场文书
解决WINDOWS电脑开机后桌面没有任何图标
2022/04/09 数码科技
手把手带你彻底卸载MySQL数据库
2022/06/14 MySQL