最近使用Pyqt5制作目标检测的ui界面时,想着增加一个运行等待的图片
但是增加后发现打开界面后第一次检测运行完全正常:输入数值点击开始检测——等待图片——显示运行结果
然后重新输入另一张图片再运行就会在出现:输入数值点击开始检测——等待图片——显示运行结果——等待图片——显示运行结果
不知道为什么会重复两次,虽然也有点怀疑是不是逻辑上有问题,但是没找到问题出在哪
完整代码如下:
class CamShow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(CamShow, self).__init__(parent)
self.setupUi(self)
self.fileBtn.clicked.connect(self.loadImage)
self.fileBtn_2.clicked.connect(self.jinzhi)
self.scale = 1
def jinzhi(self):
self.Infolabel_2.setText('未输入图像有效路径')
# 打开文件功能
def loadImage(self):
self.fname, _ = QFileDialog.getOpenFileName(self, '请选择图片', '.', '图像文件(*.jpg *.jpeg *.png)')
if self.fname:
self.Infolabel_2.setText('文件打开成功\n' + self.fname)
jpg = QtGui.QPixmap(self.fname).scaled(self.Imglabel_0.width(), self.Imglabel_0.height())
self.Imglabel_0.setPixmap(jpg)
# 开启检测按钮
self.fileBtn_2.clicked.connect(self.jiance)
else:
# print("打开文件失败")
self.Infolabel_2.setText('打开文件失败')
self.Imglabel_0.setPixmap(QPixmap(""))
def jiance(self):
thresh = self.lineEdit_X.text()
if self.fname:
if thresh:
thresh = int(thresh)
self.Infolabel_2.setText(' ')
#等待图片(问题就出在这里好像)
splash = QSplashScreen(QPixmap("./jiemian/load.jpg"))
splash.setFont(QFont('Microsoft YaHei UI', 12))
splash.show()
splash.showMessage("正在检测,请稍等……0%", QtCore.Qt.AlignLeft | QtCore.Qt.AlignBottom, QtCore.Qt.black)
time.sleep(2.0) # 模拟运算的时间
splash.showMessage("正在检测,请稍等……30%", QtCore.Qt.AlignLeft | QtCore.Qt.AlignBottom, QtCore.Qt.black)
time.sleep(3.0) # 模拟运算的时间
splash.showMessage("正在检测,请稍等……60%", QtCore.Qt.AlignLeft | QtCore.Qt.AlignBottom, QtCore.Qt.black)
time.sleep(2.0) # 模拟运算的时间
splash.showMessage("正在检测,请稍等……100%", QtCore.Qt.AlignLeft | QtCore.Qt.AlignBottom, QtCore.Qt.black)
str_all = predict.predict_single_person(self.fname, thresh)
self.Infolabel.setText(str(str_all))
# 输出结果图片
img = QtGui.QPixmap('test_result3.jpg').scaled(self.Imglabel.width(), self.Imglabel.height())
self.Imglabel.setPixmap(img)
self.Infolabel_2.setText('文件打开成功\n' + self.fname + '\n' + '结果图片保存至./result/image文件夹\n参数保存至./result/data文件夹')
else:
self.Infolabel_2.setText('未输入图像阈值')
else:
self.fileBtn_2.clicked.connect(self.jinzhi)
if __name__ == '__main__':
app = QApplication(sys.argv)
splash = QSplashScreen(QPixmap("./jiemian/waitting.jpg"))
splash.setFont(QFont('Microsoft YaHei UI', 10))
splash.show()
splash.showMessage("程序初始化中... 0%", QtCore.Qt.AlignLeft | QtCore.Qt.AlignBottom, QtCore.Qt.black)
time.sleep(1.3) # 模拟运算的时间
splash.showMessage("加载配置...60%", QtCore.Qt.AlignLeft | QtCore.Qt.AlignBottom, QtCore.Qt.black)
time.sleep(5.3) # 模拟运算的时间
splash.showMessage("加载配置...100%", QtCore.Qt.AlignLeft | QtCore.Qt.AlignBottom, QtCore.Qt.black)
ui = CamShow()
ui.show()
sys.exit(app.exec_())