PyQt5—资源文件的加载和使用

资源文件的加载和使用


  • PyQt5 生成的应用程序,引用图片资源束腰方法有两种:将资源文件装换为 python 文件,然后引用资源文件;在程序中通过相对路径引用外部图片资源。
  • 这里主要学习第一种。

1、使用 Qt Designer 加载资源文件

  • 首先在 PyQt 开发目录下,编写一个 .qrc 文件,内容如下:

  
  

  • 然后,在 Qt Designer 中的资源编辑器打开刚刚创建的 .qrc 文件,如下图:
    PyQt5—资源文件的加载和使用_第1张图片
  • 设置图片资源前缀为 pic,然后添加或删除图片资源,做完这些操作后,重新打开 apprcc.qrc,里面的内容变成如下:
    
      
        python标志.jpg
        log1.jpg
      
    
    

2、在窗体中使用资源文件

2.1、使用 Qt Designer 在窗体中放置控件

  • 在窗体中放置一个 label 控件,单击 label 控件在属性编辑器中,将其 pixmap 属性进行设置,将 pixmap 的值改为资源文件中的一张图片。
    PyQt5—资源文件的加载和使用_第2张图片

2.2.1、将.ui文件转为.py文件

  • 保存为 MainWin03.ui 文件,并使用工具将 .ui文件转为.py文件。
  • 因为我使用的是 Pycharm,所以这里介绍一种在 Pycharm 中将 .ui 文件转为 .py 文件的方法:
    将 Qt Designer 生成的UI文件和资源文件QRC文件转换为PY文件
  • 转换后的 Mainwin03.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")
            Form03.resize(556, 456)
            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")
    
            self.retranslateUi(Form03)
            QtCore.QMetaObject.connectSlotsByName(Form03)
    
        def retranslateUi(self, Form03):
            _translate = QtCore.QCoreApplication.translate
            Form03.setWindowTitle(_translate("Form03", "打包资源文件"))
    
    import apprcc_rc
    
    
  • 接着,将资源文件QRC文件转为 .py 文件,链接中已有方法,不过为了后期的方便,需将命令修改一下:
    $FileName$ -o$FileNameWithoutExtension$_rc.py
    
  • 由于转换后的PY文件,其内容比较多,这里便不贴出来了。
  • 再接着,为了实现显示和业务逻辑分开,新建一个 CallMainWin03.py 文件,其代码如下:
    # -*- coding:utf-8 -*-
    # Time : 2019/07/25 上午 9:23 
    # Author : 御承扬
    # e-mail:[email protected]
    # 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()
        sys.exit(app.exec_())
    
  • 运行效果如图:
    PyQt5—资源文件的加载和使用_第3张图片

你可能感兴趣的:(编程语言学习笔记,PyQt5)