解决PySide+Python子线程更新UI线程的问题


Posted in Python onJanuary 11, 2019

在我开发的系统,需要子线程去运行,然后把运行的结果发给UI线程,让UI线程知道运行的进度。

首先创建线程很简单

def newThread(self):
 d = Data()
 print '子线程的运行'
t1 = threading.Thread(target=newThread)
t1.setDaemon(True)
t1.start()

之后我发现用子线程去调用UI线程是行不通的,只能通过信号和槽来实现,于是

首先,定义一个类,让他实现PySide.QtCore.QObject类

class Data(PySide.QtCore.QObject): 
 #定义信号
 mySignal = Signal()

 def __init__(self): 
  #这句话很重要
  super(Data, self).__init__()
 def run(self):
  mySignal.emit()

然后再把主线程的方法绑定到该槽上去

QtCore.QObject.connect(Data的实例,QtCore.SIGNAL('mySignal()'),'主线程的方法')

最后,就可以在子线程执行run方法的时候,就会调用UI线程的方法

以上这篇解决PySide+Python子线程更新UI线程的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python下的Mysql模块MySQLdb安装详解
Apr 09 Python
python实现的udp协议Server和Client代码实例
Jun 04 Python
python登陆asp网站页面的实现代码
Jan 14 Python
python文件操作之批量修改文件后缀名的方法
Aug 10 Python
Python随机生成身份证号码及校验功能
Dec 04 Python
java判断三位数的实例讲解
Jun 10 Python
python输出电脑上所有的串口名的方法
Jul 02 Python
用python3 返回鼠标位置的实现方法(带界面)
Jul 05 Python
Python脚本操作Excel实现批量替换功能
Nov 20 Python
Django多层嵌套ManyToMany字段ORM操作详解
May 19 Python
Python如何实现定时器功能
May 28 Python
python如何做代码性能分析
Apr 26 Python
python PrettyTable模块的安装与简单应用
Jan 11 #Python
对python多线程中互斥锁Threading.Lock的简单应用详解
Jan 11 #Python
pyqt5实现俄罗斯方块游戏
Jan 11 #Python
python之线程通过信号pyqtSignal刷新ui的方法
Jan 11 #Python
对python多线程中Lock()与RLock()锁详解
Jan 11 #Python
浅谈Python 多进程默认不能共享全局变量的问题
Jan 11 #Python
Python设计模式之组合模式原理与用法实例分析
Jan 11 #Python
You might like
详细分析PHP 命名空间(namespace)
2020/06/30 PHP
用JS做的简单的可折叠的两级树形菜单
2013/09/21 Javascript
不同Jquery版本引发的问题解决
2013/10/14 Javascript
JS判断不能为空实例代码
2013/11/26 Javascript
jQuery is()函数用法3例
2014/05/06 Javascript
JS定义网页表单提交(submit)的方法
2015/03/20 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
jQuery插件FusionCharts绘制2D柱状图和折线图的组合图效果示例【附demo源码】
2017/04/10 jQuery
Javascript中click与blur事件的顺序详析
2017/04/25 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
2017/04/25 jQuery
深入理解nodejs中Express的中间件
2017/05/19 NodeJs
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
详解使用nvm安装node.js
2017/07/18 Javascript
mac中利用NVM管理不同node版本的方法详解
2017/11/08 Javascript
Vue实现用户自定义字段显示数据的方法
2018/08/28 Javascript
vue地址栏直接输入路由无效问题的解决
2018/11/15 Javascript
vue keep-alive的简单总结
2021/01/25 Vue.js
pycharm 使用心得(五)断点调试
2014/06/06 Python
python模拟鼠标拖动操作的方法
2015/03/11 Python
python编写爬虫小程序
2015/05/14 Python
使用python绘制常用的图表
2016/08/27 Python
python计算auc指标实例
2017/07/13 Python
python通过opencv实现批量剪切图片
2017/11/13 Python
Python中的Django基本命令实例详解
2018/07/15 Python
PyCharm设置每行最大长度限制的方法
2019/01/16 Python
wxPython实现带颜色的进度条
2019/11/19 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
2020/01/08 Python
如何安装并在pycharm使用selenium的方法
2020/04/30 Python
Python爬虫代理池搭建的方法步骤
2020/09/28 Python
英国第一的购买便宜玩具和游戏的在线购物网站:Bargain Max
2018/01/24 全球购物
研讨会主持词
2014/04/02 职场文书
我的理想演讲稿
2014/04/30 职场文书
太空授课观后感
2015/06/17 职场文书
《追风筝的人》:人心中的成见是座大山,但请不忘初心
2019/11/15 职场文书
Go标准容器之Ring的使用说明
2021/05/05 Golang