里面挺多语句我也不晓得为啥要这样写,也是看别人的贴,摸石头过河。右边的的sift,cnn不用管,要用的只要设计好界面左半边即可
本文用的是手动连接槽,再写个槽函数。
先是在QtDesigner布局,然后生成.py文件,在新建一个11.py,用来写主函数(主功能?)
ui_registration.py:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'ui_registration.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(932, 617)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("../../Users/wuying/.designer/backup/image/u=2713521094,611252098&fm=253&fmt=auto&app=138&f=JPEG.webp"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
MainWindow.setWindowIcon(icon)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.infr_pushButton = QtWidgets.QPushButton(self.centralwidget)
self.infr_pushButton.setGeometry(QtCore.QRect(90, 460, 171, 51))
self.infr_pushButton.setObjectName("infr_pushButton")
self.sift_registration = QtWidgets.QPushButton(self.centralwidget)
self.sift_registration.setGeometry(QtCore.QRect(580, 200, 141, 31))
self.sift_registration.setObjectName("sift_registration")
self.visible_pushButton = QtWidgets.QPushButton(self.centralwidget)
self.visible_pushButton.setGeometry(QtCore.QRect(70, 200, 171, 41))
self.visible_pushButton.setObjectName("visible_pushButton")
self.CNN_registration = QtWidgets.QPushButton(self.centralwidget)
self.CNN_registration.setGeometry(QtCore.QRect(590, 450, 141, 31))
self.CNN_registration.setObjectName("CNN_registration")
self.infr_view = QtWidgets.QLabel(self.centralwidget)
self.infr_view.setGeometry(QtCore.QRect(10, 250, 321, 181))
self.infr_view.setAutoFillBackground(False)
self.infr_view.setStyleSheet("*{background: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0 rgba(214,249,255,100) , stop:1 rgba(158,232,250,100)); border: 2px solid rgba(205,92,92,255); border-radius:20px;}")
self.infr_view.setText("")
self.infr_view.setObjectName("infr_view")
self.vis_view = QtWidgets.QLabel(self.centralwidget)
self.vis_view.setGeometry(QtCore.QRect(10, 10, 321, 181))
self.vis_view.setStyleSheet("*{background: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0 rgba(214,249,255,100) , stop:1 rgba(158,232,250,100)); border: 2px solid rgba(205,92,92,255); border-radius:20px;}")
self.vis_view.setText("")
self.vis_view.setObjectName("vis_view")
self.sift_result = QtWidgets.QLabel(self.centralwidget)
self.sift_result.setGeometry(QtCore.QRect(450, 10, 441, 181))
self.sift_result.setStyleSheet("*{background: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0 rgba(214,249,255,100) , stop:1 rgba(158,232,250,100)); border: 2px solid rgba(205,92,92,255); border-radius:20px;}")
self.sift_result.setText("")
self.sift_result.setObjectName("sift_result")
self.CNN_result = QtWidgets.QLabel(self.centralwidget)
self.CNN_result.setGeometry(QtCore.QRect(440, 250, 441, 191))
self.CNN_result.setStyleSheet("*{background: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0 rgba(214,249,255,100) , stop:1 rgba(158,232,250,100)); border: 2px solid rgba(205,92,92,255); border-radius:20px;}")
self.CNN_result.setText("")
self.CNN_result.setObjectName("CNN_result")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 932, 22))
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", "registration"))
self.infr_pushButton.setText(_translate("MainWindow", "上传红外图像"))
self.sift_registration.setText(_translate("MainWindow", "SIFT"))
self.visible_pushButton.setText(_translate("MainWindow", "上传可见光图像"))
self.CNN_registration.setText(_translate("MainWindow", "CNN"))
写11.py:
对于槽函数部分,本来想这两个按钮能连接到同一个槽函数上的(不用分两个vis,infr),但不知到槽函数那部分该怎么写。
想法是,能判断是哪个按钮按下了,在槽函数里判断一下,然后选择图片显示语句。有人可以指点一下吗
from PyQt5.QtWidgets import QApplication, QMainWindow,QFileDialog
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.QtGui import *
import sys
import ui_registration
class Maincode(QMainWindow,ui_registration.Ui_MainWindow):
def __init__(self):
QMainWindow.__init__(self)
super(Maincode, self).__init__(self)
ui_registration.Ui_MainWindow.__init__(self)
self.setupUi(self)
self.visible_pushButton.clicked.connect(self.on_open_vis)#手动连接槽
self.infr_pushButton.clicked.connect(self.on_open_infr)
def on_open_vis(self): #槽函数编写
imgName, imgType = QFileDialog.getOpenFileName(self, "打开图片", "", "*.jpg;;*.png;;All Files(*)")
jpg = QtGui.QPixmap(imgName).scaled(self.vis_view.width(), self.vis_view.height())
self.vis_view.setPixmap(jpg)
def on_open_infr(self):
imgName, imgType = QFileDialog.getOpenFileName(self, "打开图片", "", "*.jpg;;*.png;;All Files(*)")
jpg = QtGui.QPixmap(imgName).scaled(self.infr_view.width(), self.infr_view.height())
self.infr_view.setPixmap(jpg)
if __name__ == '__main__':
app = QApplication(sys.argv) # 实例化一个应用对象
md=Maincode()
md.show()
sys.exit(app.exec_())
结果展示:
补充:线框和背景色
*{background: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0 rgba(214,249,255,100) , stop:1 rgba(158,232,250,100)); border: 2px solid rgba(205,92,92,255); border-radius:20px;}
我也是从别人那里复制来的
该文介绍了如何使用PyQt5创建GUI界面,包括设置窗口布局、定义按钮和标签等组件,并通过槽函数实现按钮点击事件。文中提到的代码创建了一个包含多个按钮的窗口,每个按钮对应不同的功能,如上传图片。作者希望将两个按钮连接到同一个槽函数,以简化代码,但尚未实现如何在槽函数中判断按下的是哪个按钮。
1651

被折叠的 条评论
为什么被折叠?



