【发布时间】:2014-01-28 00:05:25
【问题描述】:
我正在学习信号和插槽,但我对这种情况感到困惑。
上下文: 我在 ClassA 中有一个方法,它需要(从工作线程)向 ClassB(在主线程中)发出信号。工作线程执行一些繁重的处理,而主线程更新 UI 中的进度条。我需要工作线程将信号传递给主线程以更新 UI。
我不确定如何在两个不同的类之间传递信号。现在我让第一个类实例化一个信号对象(通信),将它连接到第二个类中的方法,然后在准备好时发出。这导致了段错误,所以很明显我做错了什么。
我有以下信号类:
class Communicate(QtCore.QObject):
update_progress = QtCore.Signal()
这是ClassA中的方法,工作线程:
def methodInClassA(self, filename):
c = Communicate()
c.update_progress.connect(ClassB.set_progress)
print "emitting"
c.update_progress.emit()
...
这是 ClassB 中的方法,在 UI 中更新进度条:
class ClassB(QtGui.QDialog, classB.Ui_Dialog):
def __init__(self, parent=None):
super(ClassB, self).__init__(parent)
self.setupUi(self)
def set_progress(self):
print "RECEIVED"
sender = self.sender()
self.progressBar.setValue(100)
【问题讨论】:
标签: python multithreading qt pyside