Python PySide2信号在具有对象的线程之间未捕获
我有个问题找不到答案 我正在开发一个GUI应用程序,它是用Python及其UI库开发的:Python PySide2信号在具有对象的线程之间未捕获,python,multithreading,pyside,Python,Multithreading,Pyside,我有个问题找不到答案 我正在开发一个GUI应用程序,它是用Python及其UI库开发的:PySide2(Python的Qt包装器) 我有一个沉重的计算功能,我想把另一个线程,以不冻结我的用户界面。Ui应该显示“加载”,当函数结束时,从中接收结果并用它更新Ui 我已经尝试了很多不同的代码,很多例子都适用于其他人,但不是我,是PySide2的错误吗?(例如,这几乎就是我想要做的:) 我的代码是: class OtherThread(QThread): def __init__(self):
PySide2
(Python的Qt包装器)
我有一个沉重的计算功能,我想把另一个线程,以不冻结我的用户界面。Ui应该显示“加载”,当函数结束时,从中接收结果并用它更新Ui
我已经尝试了很多不同的代码,很多例子都适用于其他人,但不是我,是PySide2的错误吗?(例如,这几乎就是我想要做的:)
我的代码是:
class OtherThread(QThread):
def __init__(self):
QThread.__init__(self)
def run(self):
print 'Running......'
self.emit(SIGNAL("over(object)"), [(1,2,3), (2,3,4)])
@Slot(object)
def printHey( obj):
print 'Hey, I\'ve got an object ',
print obj
thr = OtherThread()
self.connect(thr,SIGNAL("over(object)"),printHey)
thr.start()
如果我使用诸如bool
或int
之类的原语,但不使用object,则我的代码可以工作。我看到的是‘跑步……’,但其他的都看不到
希望有人能告诉我,你不能在类实例上动态定义信号。它们必须定义为类属性。你应该用这个
不能在类实例上动态定义信号。它们必须定义为类属性。你应该用这个
嘿,非常感谢这就是我要找的。奇怪的是,我第一次就是这样尝试的,但没有成功。我应该错过一些东西,我想x)嘿,非常感谢,这就是我要找的。奇怪的是,我第一次就是这样尝试的,但没有成功。我应该错过一些东西,我认为(x)
class OtherThread(QThread):
over = QtCore.Signal(object)
def run(self):
...
self.over.emit([(1,2,3), (2,3,4)])
class MyApp(QtCore.QObject)
def __init__(self):
super(MyApp, self).__init__()
self.thread = OtherThread(self)
self.thread.over.connect(self.on_over)
self.thread.start()
@QtCore.Slot(object)
def on_over(self, value):
print 'Thread Value', value