PyQt5——显示图片

1、Qt designer 添加图片,创建新的qrc文件,添加前缀

注意,需要将图片先复制到目标文件夹下,不然不显示

2、将qrc文件转成py文件 cmd进入qrc文件所在目录 pyrcc5 mydemo.qrc -o mydemo.py

3、之后既可以import  mydemo

给图片添加点击事件:(其他东西也可添加点击事件,不过需要找到需要家点击事件的控件)

        self.graphicsView_2.mousePressEvent=self.myclick
    def myclick(self,e):
        print('aaa')
        webbrowser.open('www.baidu.com')

使用label显示图片:

同上

图片的三种显示方式:

1、background image:只取控件那么大的面积显示

2、border image:上下左右任意改

3、image:  长宽比不变

点击button更改图片

    def slot1(self):
        self.graphicsView_2.setStyleSheet("border-image: url(:/mypic/3.jpg);")

        self.graphicsView_2.setStyleSheet("border-image: url(:/mypic/3.jpg);")在上面控件引用资源就有,可直接粘贴,改变图片名称即可
练习:三个radio button,点一个换一幅图

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'demo4.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets
#from PyQt5.QtCore import pyqtSignature
from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtWidgets import QApplication
import mydemo
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
        self.groupBox.setGeometry(QtCore.QRect(120, 90, 171, 121))
        self.groupBox.setObjectName("groupBox")
        self.radioButton = QtWidgets.QRadioButton(self.groupBox)
        self.radioButton.setGeometry(QtCore.QRect(10, 20, 89, 16))
        self.radioButton.setObjectName("radioButton")
        self.radioButton_2 = QtWidgets.QRadioButton(self.groupBox)
        self.radioButton_2.setGeometry(QtCore.QRect(10, 50, 89, 16))
        self.radioButton_2.setObjectName("radioButton_2")
        self.radioButton_3 = QtWidgets.QRadioButton(self.groupBox)
        self.radioButton_3.setGeometry(QtCore.QRect(10, 80, 89, 16))
        self.radioButton_3.setObjectName("radioButton_3")
        self.graphicsView = QtWidgets.QGraphicsView(self.centralwidget)
        self.graphicsView.setGeometry(QtCore.QRect(110, 290, 151, 101))
        self.graphicsView.setStyleSheet("image: url(:/mypic/1.jpg);\n"
"border-image: url(:/mypic/1.jpg);")
        self.graphicsView.setObjectName("graphicsView")
        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)
        self.radioButton.clicked.connect(self.slot1)
        self.radioButton_2.clicked.connect(self.slot2)
        self.radioButton_3.clicked.connect(self.slot3)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
    def slot1(self):
        self.graphicsView.setStyleSheet("image: url(:/mypic/1.jpg);\n"
"border-image: url(:/mypic/1.jpg);")
    def slot2(self):
        self.graphicsView.setStyleSheet("image: url(:/mypic/1.jpg);\n"
"border-image: url(:/mypic/2.jpg);")
    def slot3(self):
        self.graphicsView.setStyleSheet("image: url(:/mypic/1.jpg);\n"
"border-image: url(:/mypic/3.jpg);")

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.groupBox.setTitle(_translate("MainWindow", "GroupBox"))
        self.radioButton.setText(_translate("MainWindow", "im1"))
        self.radioButton_2.setText(_translate("MainWindow", "im2"))
        self.radioButton_3.setText(_translate("MainWindow", "im3"))


if __name__=="__main__":
    import sys
    app=QApplication(sys.argv)
    mainwindow=QtWidgets.QMainWindow()
    ui=Ui_MainWindow()
    ui.setupUi(mainwindow)
    mainwindow.show()
    sys.exit(app.exec_())

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值