一.界面显示
- 1.登录界面(输入账号和密码)
- 2.检测界面:
- 3.预览功能:
(1)单张图像检测
(2)视频检测
(3)暂停/继续检测
(4)结束检测
(5)结果保存
(6)在另外一个界面显示结果excel(下一步)
二.部分代码展示
main.py(登录界面):
```python
# self.pushButton.setShortcut(_translate("MainWindow", "enter")) #设置快捷键
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QMessageBox
from dl import Ui_MainWindow_one
from open_camera_main import *
from PyQt5.QtCore import Qt
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class login_window(QtWidgets.QMainWindow, Ui_MainWindow_one):
def __init__(self):
super(login_window, self).__init__()
self.setupUi(self) # 创建窗体对象
self.init()
self.admin = "1"
self.Password = "1"
self.setWindowTitle('合肥超科电子')
# 设置窗口图标
self.setWindowIcon(QIcon('.UI/shw.ico'))
#设置pushbutton的大小和颜色以及字体
self.pushButton.setStyleSheet("QPushButton{font-family:'楷体';font-size:16px;color:rgb(0,0,0,255);}\
QPushButton{background-color:rgb(170,200,50)}\ QPushButton:hover{background-color:rgb(50, 170, 200)}")
self.pushButton_2.setStyleSheet("QPushButton{font-family:'楷体';font-size:16px;color:rgb(0,0,0,255);}\
QPushButton{background-color:rgb(170,200,50)}\ QPushButton:hover{background-color:rgb(50, 170, 200)}")
self.pushButton_3.setStyleSheet("QPushButton{font-family:'楷体';font-size:16px;color:rgb(0,0,0,255);}\
QPushButton{background-color:rgb(170,200,50)}\ QPushButton:hover{background-color:rgb(50, 170, 200)}")
#qlabel
self.label.setStyleSheet("QPushButton{font-family:'楷体';font-size:16px;color:rgb(0,0,0,255);}\
QPushButton{background-color:rgb(170,200,50)}\ QPushButton:hover{background-color:rgb(50, 170, 200)}")
def init(self):
self.pushButton.clicked.connect(self.login_button) # 连接槽
self.pushButton_2.clicked.connect(self.login_button_2) # 连接槽
self.pushButton_3.clicked.connect(self.login_button_3) # 连接槽
def login_button(self):
if (self.lineEdit.text() == "") and self.lineEdit_2.text() == "":
QMessageBox.warning(self, '警告', '账号或密码不能为空,请输入!')
return None
# if self.password == self.lineEdit.text():
if (self.lineEdit.text() == self.Password) and self.lineEdit_2.text() == self.admin:
# Ui_Main = Open_Camera() # 生成主窗口的实例
# 1打开新窗口
Ui_Main.show()
# 2关闭本窗口
self.close()
else:
QMessageBox.critical(self, '错误', '密码错误!')
self.lineEdit.clear()
self.lineEdit_2.clear()
return None
def login_button_2(self):
self.close()
def login_button_3(self):
QMessageBox.warning(self, '账号密码提醒','账号:生日,密码:生日')
def paintEvent(self, event):
painter = QPainter(self)
pixmap = QPixmap("./UI/qq.jpg")
painter.drawPixmap(self.rect(), pixmap)
if __name__ == '__main__':
from PyQt5 import QtCore
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling) # 自适应分辨率
stylesheet = """
Ui_MainWindow {
background-image: url("shw.jpg");
background-repeat: no-repeat;
background-position: center;
}
"""
app = QtWidgets.QApplication(sys.argv)
app.setStyleSheet(stylesheet)
window = login_window()
Ui_Main = detect_window() # 生成主窗口的实例
shw = excel_shw()
window.show()
sys.exit(app.exec_())
dl.py(ui界面):
```python
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
# 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_one(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(150, 50, 551, 141))
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(210, 210, 61, 21))
self.label_2.setObjectName("label_2")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(210, 270, 51, 21))
self.label_3.setObjectName("label_3")
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(310, 210, 181, 21))
self.lineEdit.setObjectName("lineEdit")
self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_2.setGeometry(QtCore.QRect(310, 270, 181, 20))
self.lineEdit_2.setObjectName("lineEdit_2")
self.layoutWidget = QtWidgets.QWidget(self.centralwidget)
self.layoutWidget.setGeometry(QtCore.QRect(190, 360, 367, 25))
self.layoutWidget.setObjectName("layoutWidget")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.layoutWidget)
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout.setObjectName("horizontalLayout")
self.pushButton = QtWidgets.QPushButton(self.layoutWidget)
self.pushButton.setObjectName("pushButton")
self.horizontalLayout.addWidget(self.pushButton)
spacerItem = QtWidgets.QSpacerItem(58, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem)
self.pushButton_2 = QtWidgets.QPushButton(self.layoutWidget)
self.pushButton_2.setMinimumSize(QtCore.QSize(0, 23))
self.pushButton_2.setObjectName("pushButton_2")
self.horizontalLayout.addWidget(self.pushButton_2)
spacerItem1 = QtWidgets.QSpacerItem(58, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem1)
self.pushButton_3 = QtWidgets.QPushButton(self.layoutWidget)
self.pushButton_3.setObjectName("pushButton_3")
self.horizontalLayout.addWidget(self.pushButton_3)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label.setText(_translate("MainWindow", "<html><head/><body><p><span style=\" font-size:22pt; font-weight:600; color:#aa0000;\">欢迎使用合肥超科电子有限公司巡检</span></p></body></html>"))
self.label_2.setText(_translate("MainWindow", "<html><head/><body><p><span style=\" font-size:12pt;\">账号:</span></p></body></html>"))
self.label_3.setText(_translate("MainWindow", "<html><head/><body><p><span style=\" font-size:12pt;\">密码:</span></p></body></html>"))
self.pushButton.setText(_translate("MainWindow", "登录"))
self.pushButton_2.setText(_translate("MainWindow", "退出"))
self.pushButton_3.setText(_translate("MainWindow", "提示"))
三.总结展望
该项目是这两天基于公司写的初版界面功能,因时间有限,所以还有些功能还没写入进去,后续想对两对线阵相机进行实时读取,进行检测,实时显示出里程信息,相机ID,以及缺陷类别.今年刚毕业入职,还有很多算法开发上的知识有待提升,期望和大家的交流.