AttributeError:' StartQT4'对象没有属性'接受'

时间:2015-03-27 15:05:47

标签: python qt

我正在尝试使用QT4和Python编写快速对话框。 我使用pyuic4生成了Python类,并尝试制作一个小的python脚本来启动它:

import sys
from PyQt4 import QtCore, QtGui
from ConfigGUI import Ui_ConfigGUI

class StartQT4(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_ConfigGUI()
        self.ui.setupUi(self)


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = StartQT4()
    myapp.show()
    sys.exit(app.exec_())

当我尝试运行它时,它会显示AttributeError: 'StartQT4' object has no attribute 'accept'

我做错了什么?

1 个答案:

答案 0 :(得分:11)

我设法重现了你的问题。您在QtDesigner中选择了基于对话框的表单,但正在尝试在QMainWindow内构建它。

Form base selection dialog in QtDesigner

UI代码尝试将其按钮绑定到accept中无法使用的默认对话框插槽rejectQMainWindow

来自ConfigGUI.py:

QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), Dialog.accept)
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("rejected()")), Dialog.reject)
  

该类包含一个名为setupUi()的方法。这需要一个参数,即创建用户界面的小部件。此参数的类型(通常为QDialogQWidgetQMainWindow)在Designer中设置。我们将此类型称为 Qt基类

     

- http://pyqt.sourceforge.net/Docs/PyQt4/designer.html

因此,要么在Designer中选择主窗口作为基类,要么将StartQT4的继承更改为QtGui.QDialog