PyQt5—资源⽂件的加载和使⽤
资源⽂件的加载和使⽤
PyQt5 ⽣成的应⽤程序,引⽤图⽚资源束腰⽅法有两种:将资源⽂件装换为 python ⽂件,然后引⽤资源⽂件;在程序中通过相对路径引⽤外部图⽚资源。
这⾥主要学习第⼀种。
1、使⽤ Qt Designer 加载资源⽂件
⾸先在 PyQt 开发⽬录下,编写⼀个 .qrc ⽂件,内容如下:
<RCC>
<qresource prefix="pic">
</qresource>
</RCC>
然后,在 Qt Designer 中的资源编辑器打开刚刚创建的 .qrc ⽂件,如下图:
设置图⽚资源前缀为 pic,然后添加或删除图⽚资源,做完这些操作后,重新打开 apprcc.qrc,⾥⾯的内容变成如下:
<RCC>
<qresource prefix="pic">
<file>python标志.jpg</file>
<file>log1.jpg</file>
</qresource>
</RCC>
图片编辑器app
2、在窗体中使⽤资源⽂件
2.1、使⽤ Qt Designer 在窗体中放置控件
在窗体中放置⼀个 label 控件,单击 label 控件在属性编辑器中,将其 pixmap 属性进⾏设置,将 pixmap 的值改为资源⽂件中的⼀张图⽚。
2.2.1、将.ui⽂件转为.py⽂件
保存为 MainWin03.ui ⽂件,并使⽤⼯具将 .ui⽂件转为.py⽂件。
因为我使⽤的是 Pycharm,所以这⾥介绍⼀种在 Pycharm 中将 .ui ⽂件转为 .py ⽂件的⽅法:
转换后的 ⽂件的代码如下:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'MainWin03.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
class Ui_Form03(object):
def setupUi(self, Form03):
Form03.setObjectName("Form03")
self.label = QtWidgets.QLabel(Form03)
self.label.setGeometry(QtCore.QRect(30,10,521,431))
self.label.setText("")
self.label.setPixmap(QtGui.QPixmap(":/pic/log1.jpg"))
self.label.setObjectName("label")
tSlotsByName(Form03)
def retranslateUi(self, Form03):
_translate = anslate
Form03.setWindowTitle(_translate("Form03","打包资源⽂件"))
import apprcc_rc
接着,将资源⽂件QRC⽂件转为 .py ⽂件,链接中已有⽅法,不过为了后期的⽅便,需将命令修改⼀下:$FileName$ -o$FileNameWithoutExtension$_rc.py
由于转换后的PY⽂件,其内容⽐较多,这⾥便不贴出来了。
再接着,为了实现显⽰和业务逻辑分开,新建⼀个 ⽂件,其代码如下:
# -*- coding:utf-8 -*-
# Time : 2019/07/25 上午 9:23
# Author : 御承扬
# e-mail:2923616405@qq
# project:  PyQt5
# File : CallMainWin03.py
# @software: PyCharm
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from打包资源⽂件.MainWin03 import Ui_Form03
class MyMainWindow(QMainWindow, Ui_Form03):
def__init__(self, parent=None):
super(MyMainWindow, self).__init__(parent)
self.setupUi(self)
if __name__ =="__main__":
app = QApplication(sys.argv)
myWin = MyMainWindow()
myWin.show()
<_())
运⾏效果如图: