运行时报错AttributeError: 'Ui_MainWindow' object has no attribute 'select_clicked'
```python
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'imge.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.select = QtWidgets.QPushButton(self.centralwidget)
self.select.setGeometry(QtCore.QRect(30, 30, 93, 28))
self.select.setObjectName("select")
self.key = QtWidgets.QPushButton(self.centralwidget)
self.key.setGeometry(QtCore.QRect(30, 110, 93, 28))
self.key.setObjectName("key")
self.surf = QtWidgets.QPushButton(self.centralwidget)
self.surf.setGeometry(QtCore.QRect(30, 200, 93, 28))
self.surf.setObjectName("surf")
self.match = QtWidgets.QPushButton(self.centralwidget)
self.match.setGeometry(QtCore.QRect(30, 290, 93, 28))
self.match.setObjectName("match")
self.save = QtWidgets.QPushButton(self.centralwidget)
self.save.setGeometry(QtCore.QRect(30, 380, 93, 28))
self.save.setObjectName("save")
self.labelimge = QtWidgets.QLabel(self.centralwidget)
self.labelimge.setGeometry(QtCore.QRect(150, 20, 220, 220))
self.labelimge.setObjectName("labelimge")
self.labelkey = QtWidgets.QLabel(self.centralwidget)
self.labelkey.setGeometry(QtCore.QRect(500, 20, 220, 220))
self.labelkey.setObjectName("labelkey")
self.labelsurf = QtWidgets.QLabel(self.centralwidget)
self.labelsurf.setGeometry(QtCore.QRect(150, 240, 220, 220))
self.labelsurf.setObjectName("labelsurf")
self.labelmatch = QtWidgets.QLabel(self.centralwidget)
self.labelmatch.setGeometry(QtCore.QRect(500, 240, 220, 220))
self.labelmatch.setObjectName("labelmatch")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
self.select.clicked.connect(self.select_clicked)
self.key.clicked.connect(self.key_clicked)
self.surf.clicked.connect(self.surf_clicked)
self.match.clicked.connect(self.match_clicked)
self.save.clicked.connect(self.save_clicked)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.select.setText(_translate("MainWindow", "选择图像"))
self.key.setText(_translate("MainWindow", "画出关键点"))
self.surf.setText(_translate("MainWindow", "描述特征点"))
self.match.setText(_translate("MainWindow", "拼接图像"))
self.save.setText(_translate("MainWindow", "保存图像"))
self.labelimge.setText(_translate("MainWindow", "图片"))
self.labelkey.setText(_translate("MainWindow", "关键点"))
self.labelsurf.setText(_translate("MainWindow", "特征点"))
self.labelmatch.setText(_translate("MainWindow", "拼接图"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
```
这个错误是因为在你的Ui_MainWindow类中没有定义'select_clicked'方法,但在setupUi方法中尝试连接到它。
不知道你这个问题是否已经解决, 如果还没有解决的话:这个文件,没有在工程目录下,应该是qt生成后放在编译目录中了。编译时会连接。
见代码的注释
#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H
#include <QtCore/QVariant>
// ***省略***
class Ui_MainWindow // 定义了一个 Ui_MainWindow 类
{
public:
// ***省略***
void setupUi(QMainWindow *MainWindow)
{
// ***省略***
} // setupUi
};
namespace Ui {
// Ui空间里,定义了一个MainWindow_gui类,该类继承自Ui_MainWindow
class MainWindow_gui: public Ui_MainWindow {};
} // namespace Ui
#endif // UI_MAINWINDOW_H