Python Qt GUI设计入门PyQt5 的资源调用

Posted 肆拾伍

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python Qt GUI设计入门PyQt5 的资源调用相关的知识,希望对你有一定的参考价值。


前言

前面讲了PyQt5 GUI应用的整个程序框架以及信号槽函数的使用,但是还没有介绍各种资源文件的使用,比如图标、音频等资源可能在程序中需要被调用。虽然可以可以一股脑的全部放到同一目录下,但是在文件较多的时候显得很乱,而且在打包使用的时候还需要把资源文件都放到一起。本篇文章介绍如何在PyQt5中使用资源文件,这里以设置窗体图标以及按键图标为例。


一、简单的创建一个UI文件

简单创建一个GUI窗口,不设置信号和槽函数,只是为了后面放置一下图标。
还是和上一章一样的步骤:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、创建资源文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
名称可以自己设置,但是会影响后面编译时的代码,下面会讲。打开资源文件如下图所示,点击添加,修改前缀:
在这里插入图片描述
在这里插入图片描述
添加文件,可以选择几张图片放置到这个路径下面。
在这里插入图片描述

三、编译窗体文件和资源文件

保存两个批处理文件:
在这里插入图片描述

pyrcc5 res.qrc -o res_rc.py # 这个是编译资源文件  这里要注意编译后的文件名必须是 原名称_rc.py
pyuic5 -o MyWidget.py widget.ui # 这个是编译ui文件

运行后得到两个py文件:
在这里插入图片描述
要是打开这个资源文件编译出来的py文件可以发现里面已经保存了资源文件里面的所有数据,就不需要再将所需要用到的文件放到目录里去了。

四、封装类调用

和之前一样,重新定义一个类来调用这个自动生成的模板类,代码如下:

import sys
from PyQt5.QtWidgets import QWidget,QApplication
from  PyQt5.QtGui import QIcon

from MyWidget import Ui_Widget

class QMyWidget(QWidget):
    def __init__(self):
        super(QMyWidget, self).__init__()
        self.ui = Ui_Widget()
        self.ui.setupUi(self)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    icon = QIcon(":/icons/tech.png") # 这里调用了图片数据,需要标注路径,路径就是之前在资源文件里面定义的prefix
    form = QMyWidget()
    icon2 = QIcon("me.png")
    form.setWindowIcon(icon)# 设置窗体图标
    # form.setWindowIcon(icon2)
    form.show()
    sys.exit(app.exec_())

效果图:
在这里插入图片描述

总结

本文介绍了如何使用资源文件来管理程序所需要用到的数据,直接将所有数据都保存在生成的py文件里面,这样就不用把文件都放到目录里面,方便程序打包。当然,也可以在主目录里面新建一个资源文件夹专门来管理用到的资源。现在GUI设计额核心内容已经讲解完了,再就需要逐步熟悉各个窗口类的使用方法,包里面的各种模块的内容都需要慢慢学习,用多了就会了。

以上是关于Python Qt GUI设计入门PyQt5 的资源调用的主要内容,如果未能解决你的问题,请参考以下文章

Python Qt GUI设计入门

PyQt5快速入门PyQt5 GUI界面设计

PyQt5快速入门PyQt5简介

『Python动手学』PyQt5入门教程

Python Qt GUI设计入门信号与槽函数

Python Qt GUI设计入门自建信号与槽函数关联