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_())