运行时错误报告缺少接受属性

时间:2012-01-16 08:02:19

标签: python pyqt4

我正在使用python。当我尝试运行我的DlgDbError.py文件时,它给出了错误说:

File "C:\rt_sql_layer\ui\DlgDbError_ui.py", line 47, in setupUi
    QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), DlgDbError.accept)
AttributeError: 'DlgDbError' object has no attribute 'accept'

但是buttonbox有接受方法......可能是什么问题??

3 个答案:

答案 0 :(得分:2)

该错误不在DlgDbError.py文件中,而是在您使用DlgDbError_ui.py创建的pyuic4模块中。

此模块将包含Ui_DlgDbError类,其中包含setupUi方法。此方法有一个参数(名为DlgDbError),它接受您在Qt Designer中创建的主窗体类的实例(即也称为DlgDbError的实例)。

setupUi方法期望DlgDbError对象具有accept()个插槽,这可能意味着它应该是QDialog的子类。

显然,您没有将QDialog的子类传递给setupUi,因此您获得了AttributeError

你可能需要这样做:

from DlgDbError_ui import Ui_DlgDbError

class MyDlgDbError(Ui_DlgDbError):
    def __init__(self, parent=None)
        self.dialog = QtGui.QDialog(parent)
        self.setupUi(self.dialog)
        ...

答案 1 :(得分:1)

也许它应该是self.buttonBox.accept而不是DlgDbError.accept呢?

答案 2 :(得分:1)

该行应该是:

QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), DlgDbError.accept)

即。 QtCore.SIGNAL(“accepted()”)实际上应该是QtCore.SIGNAL(_fromUtf8(“accepted()”))

其中:

_fromUtf8 = QtCore.QString.fromUtf8