蟒蛇。将自定义类连接到QThread

时间:2017-06-06 09:28:15

标签: python pyqt4 signals-slots qthread

在我的应用程序中,我将controll类定义如下:

class Controller(QtGui.QWidget, Ui_myUI):

在按钮单击操作的这个类中,我想将QThread的finished()动作连接到done类中定义的Controller方法,如下所示:

def applyAction(self):
    self.myTread = MyTestTread()
    self.connect(self.myTread, QtCore.SIGNAL("finished()"), self.done)
    self.myTread.start()

但是这段代码会返回以下错误:

AttributeError: 'Controller' object has no attribute 'connect'

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

您尝试使用的connect函数是QObject的静态方法。此示例来自docs

button = QtGui.QPushButton("Call someFunc")
QtCore.QObject.connect(button, QtCore.SIGNAL ('clicked()'), someFunc)

在我看来,您希望将applyAction中的第二行替换为:

QtCore.QObject.connect(self.myTread, QtCore.SIGNAL("finished()"), self.done)

请注意,此语法很久以前已弃用(自Qt 4.5起)。新的方式是:

self.myTread.finished.connect(self.done)