解决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判断变量是否已经定义的方法
Aug 18 Python
使用Python编写简单网络爬虫抓取视频下载资源
Nov 04 Python
修改Python的pyxmpp2中的主循环使其提高性能
Apr 24 Python
Python3编程实现获取阿里云ECS实例及监控的方法
Aug 18 Python
opencv改变imshow窗口大小,窗口位置的方法
Apr 02 Python
python破解zip加密文件的方法
May 31 Python
使用python将大量数据导出到Excel中的小技巧分享
Jun 14 Python
解决PyCharm的Python.exe已经停止工作的问题
Nov 29 Python
Python中xml和json格式相互转换操作示例
Dec 05 Python
利用Python查看微信共同好友功能的实现代码
Apr 24 Python
python 爬虫之selenium可视化爬虫的实现
Dec 04 Python
如何使用PyCharm及常用配置详解
Jun 03 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 MYSQL 数据备份类
2009/06/19 PHP
使用PHP提取视频网站页面中的FLASH地址的代码
2010/04/17 PHP
php中去除所有js,html,css代码
2010/10/12 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
PHP PDOStatement::setAttribute讲解
2019/02/01 PHP
php输出文字乱码的解决方法
2019/10/04 PHP
Web层改进II-用xmlhttp 无声息提交复杂表单
2007/01/22 Javascript
JavaScript RegExp方法获取地址栏参数(面向对象)
2009/03/10 Javascript
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
imgAreaSelect 中文文档帮助说明
2011/10/08 Javascript
js实现可拖动DIV的方法
2013/12/17 Javascript
jQuery实现视频作为全屏幕背景
2014/12/18 Javascript
JavaScript 浏览器对象模型BOM使用介绍
2015/04/13 Javascript
JavaScript实现图片自动加载的瀑布流效果
2016/04/11 Javascript
Vue.js常用指令汇总(v-if、v-for等)
2016/11/03 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
2016/12/14 Javascript
老生常谈javascript中逻辑运算符&&和||的返回值问题
2017/04/13 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
微信小程序实现多选功能
2018/11/04 Javascript
微信小程序--获取用户地理位置名称(无须用户授权)的方法
2019/04/29 Javascript
jQuery 动态粒子效果示例代码
2020/07/07 jQuery
对Django中内置的User模型实例详解
2019/08/16 Python
python如何通过pyqt5实现进度条
2020/01/20 Python
Python使用Excel将数据写入多个sheet
2020/05/16 Python
高性能装备提升营地:Kammok
2019/02/27 全球购物
如何在Cookie里面保存Unicode和国际化字符
2013/05/25 面试题
优秀高中生事迹材料
2014/02/11 职场文书
加多宝凉茶广告词
2014/03/18 职场文书
个人买房协议书范本
2014/10/06 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
2014年内部审计工作总结
2014/12/09 职场文书
食品质检员岗位职责
2015/04/08 职场文书
班主任寄语2016
2015/12/04 职场文书
浅谈Python响应式类库RxPy
2021/06/14 Python
「月刊Action」2022年5月号封面公开
2022/03/21 日漫
Javascript中Microtask和Macrotask鲜为人知的知识点
2022/04/02 Javascript