您的位置:首页 > 编程语言 > Python开发

4000 解决PySide+Python子线程更新UI线程

2017-05-03 14:09 447 查看
在我开发的系统,需要子线程去运行,然后把运行的结果发给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线程的方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐