【自用】pyqt5 按钮上传图片 小白可无脑使用

该文介绍了如何使用PyQt5创建GUI界面,包括设置窗口布局、定义按钮和标签等组件,并通过槽函数实现按钮点击事件。文中提到的代码创建了一个包含多个按钮的窗口,每个按钮对应不同的功能,如上传图片。作者希望将两个按钮连接到同一个槽函数,以简化代码,但尚未实现如何在槽函数中判断按下的是哪个按钮。
摘要由CSDN通过智能技术生成

里面挺多语句我也不晓得为啥要这样写,也是看别人的贴,摸石头过河。右边的的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;}

我也是从别人那里复制来的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值