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 参数列表中的self 显式不等于冗余
Dec 01 Python
11个并不被常用但对开发非常有帮助的Python库
Mar 31 Python
Python while 循环使用的简单实例
Jun 08 Python
Python生成随机数组的方法小结
Apr 15 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
Jun 22 Python
python实现两个文件夹的同步
Aug 29 Python
python flask中动态URL规则详解
Nov 22 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
Dec 19 Python
python进行参数传递的方法
May 12 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
Feb 07 Python
只需要100行Python代码就可以实现的贪吃蛇小游戏
May 27 Python
Opencv实现二维直方图的计算及绘制
Jul 21 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/03/02 日漫
咖啡的植物学知识
2021/03/03 咖啡文化
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
thinkphp缓存技术详解
2014/12/09 PHP
php通过文件流方式复制文件的方法
2015/03/13 PHP
PHP中list()函数用法实例简析
2016/01/08 PHP
PHP6新特性分析
2016/03/03 PHP
Yii2中datetime类的使用
2016/12/17 PHP
使用vs code编辑调试php配置的方法
2019/01/29 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
2010/06/25 Javascript
基于javascript实现图片左右切换效果
2016/01/25 Javascript
JavaScript File API文件上传预览
2016/02/02 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
jQuery包裹节点用法完整示例
2016/09/13 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
2016/12/29 Javascript
详解nodejs express下使用redis管理session
2017/04/24 NodeJs
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
使用Vue制作图片轮播组件思路详解
2018/03/21 Javascript
深入浅析var,let,const的异同点
2018/08/07 Javascript
Vue混入mixins滚动触底的方法
2019/11/22 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
Vue CLI4 Vue.config.js标准配置(最全注释)
2020/06/05 Javascript
五句话帮你轻松搞定js原型链
2020/12/09 Javascript
html5 svg 中元素点击事件添加方法
2013/01/16 HTML / CSS
英国当代时尚和街头服饰店:18montrose
2018/12/15 全球购物
芬兰设计商店美国:Finnish Design Shop US
2019/03/25 全球购物
世界排名第一的运动鞋市场:Flight Club
2020/01/03 全球购物
C#公司笔试题
2014/03/28 面试题
就业自荐书
2013/12/05 职场文书
公务员政审材料范文
2014/12/23 职场文书
个人向公司借款协议书
2016/03/19 职场文书
Mysql文件存储图文详解
2021/06/01 MySQL
小程序实现悬浮按钮的全过程记录
2021/10/16 HTML / CSS
Nginx源码编译安装过程记录
2021/11/17 Servers