我正在尝试使用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'
。
我做错了什么?
答案 0 :(得分:11)
我设法重现了你的问题。您在QtDesigner中选择了基于对话框的表单,但正在尝试在QMainWindow
内构建它。
UI代码尝试将其按钮绑定到accept
中无法使用的默认对话框插槽reject
和QMainWindow
。
来自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()
的方法。这需要一个参数,即创建用户界面的小部件。此参数的类型(通常为QDialog
,QWidget
或QMainWindow
)在Designer中设置。我们将此类型称为 Qt基类。
因此,要么在Designer中选择主窗口作为基类,要么将StartQT4
的继承更改为QtGui.QDialog
。