解决PySide+Python子线程更新UI线程的问题
投稿:jingxian
今天小编就为大家分享一篇解决PySide+Python子线程更新UI线程的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
在我开发的系统,需要子线程去运行,然后把运行的结果发给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爬虫之Spider类用法简单介绍
- Python3爬虫中pyspider的安装步骤
- Python自带的IDE在哪里
- Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
- python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
- python PyQt5/Pyside2 按钮右击菜单实例代码
- Python中PyQt5/PySide2的按钮控件使用实例
- Gauss-Seidel迭代算法的Python实现详解
- Python开发最牛逼的IDE——pycharm
- python安装以及IDE的配置教程
- PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?