版权声明:本文为博主原创文章,转载 请注明出处:https://blog.csdn.net/sc2079/article/details/90454379
2022更:链接:https://pan.baidu.com/s/1Qw145uoRgmaks3MaGlTEOQ
提取码:scyf。仅限本博客核心代码~(好多人私信(^-^)V,现直接百度云盘见吧)
- 写在前面
本科毕业设计终于告一段落了。特写博客记录做毕业设计(路面裂纹识别)期间的踩过的坑和收获。希望对你有用。
目前有:
1.Tensorflow&CNN:裂纹分类
2.Tensorflow&CNN:验证集预测与模型评价
3.PyQt5多个GUI界面设计
本篇讲GUI界面的设计。设计目标:实现用户对路面裂纹快速检测与识别,有三个界面:主界面、裂纹快速识别界面、图像处理测试界面。
- 环境配置安装
运行环境:Python3.6、Spyder、Qt Designer
依赖的模块:PyQt5、mysql等
值得注意的是:我安装PyQt5模块时,按照网上方法,如下:
pip install PyQt5
pip install PyQt5-tools
却发现找到Qt Designer的应用程序,(其实是有的,在C盘的某个角落,可以用everything小工具可以找到)。
于是乎,我就直接使用了PyQt5运行环境合集,内含Qt Designer(主要用来设计界面以及UI文件转换成PY)。
下载地址如下:
- 开始工作
1. 界面设计
打开Qt Designer:

可以参照网上或书籍上关于Qt Designer的资料,简单设计三个界面,如下:



Qt Designer设计的文件后缀为.ui,需要将其转换为.py文件。打开刚才下载的PyQt5合集中的WinPython Command Prompt,输入:
pyuic5 -o D:\WinPyQt5.9-32bit-3.5.3.1\test\XX.py D:\WinPyQt5.9-32bit-3.5.3.1\test\XX.ui
即可得到界面的Python文件。
2. 界面功能实现
2.1 主界面
主界面功能比较简单,主要是用户对功能的选择以及对该系统的了解。
from PyQt5.QtWidgets import QMainWindow,QMessageBox,QApplication
from main_gui import Ui_MainWindow
import sys
import time
from PyQt5.QtGui import QPixmap
class MainWindow(QMainWindow):
def __init__(self,parent = None):
super(MainWindow,self).__init__(parent=parent)#调用父类的init
global ui
ui = Ui_MainWindow()
ui.setupUi(self)
def about_us(self):
msgBox = QMessageBox(QMessageBox.NoIcon, '关于','XX的本科毕业设计')
msgBox.setIconPixmap(QPixmap(".//icon//me3.jpg"))
msgBox.exec()
def function_exp(self):
msgBox = QMessageBox(QMessageBox.NoIcon, '功能说明','')
msgBox.exec()
def operate_exp(self):
msgBox = QMessageBox(QMessageBox.NoIcon, '操作说明','')
msgBox.exec()
def jump_to_1(self):
pass
def jump_to_2(self):
pass
def closeEvent(self, event):
reply = QMessageBox.question(self, '提醒',
"确定退出?", QMessageBox.Yes |
QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore()
if __name__ == '__main__':
app = 0
app = QApplication(sys.argv)
myMainWindow = MainWindow()#自定义的类例化
myMainWindow.show()
time.sleep(10)
sys.exit(app.exec_())
而对于转换的主界面的py代码(注意:本文将转换成的.py文件命名为xx_gui.py,而其对应的.py文件命名为xx_win.py),找到如下语句:
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
修改为:
self