SAdb项目第三章-Pyside6资源文件与UI文件的使用

好了,本章是第三章,讲述数和使用将第二章弄的简易UI界面用程序跑起来。

本章讲述两种方式,一种是转换后的,一种是直接使用UI文件的方式。

使用UI转换的Py文件后运行程序

from UI.index import Ui_Form
from PySide6.QtWidgets import QWidget, QApplication


class Index_UI(QWidget, Ui_Form):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.show()


if __name__ == '__main__':
    app = QApplication([])
    index = Index_UI()
    app.exec()

如上,这就是第一种方式了,也是博主常用的一种方式。运行代码后你也许会遇到这么一个报错:**ModuleNotFoundError: No module named 'resources_rc'**,别担心,这是项目的开始,也会告诉你如何解决这些问题。
这个问题就是说resources_rc模块没有找到,也就是我们的转换后的py文件出了问题,将index.py文件中的import resources_rc修改成from . import resources_rc即可为什么要这么改,因为我们修改了PySide6默认寻找的文件路径层级,导致它找不到目录下的资源文件,所以需要指定告诉它这个资源文件从哪引入。
还有一个解决思路,就是将资源文件放在根目录下,如下图所示,就能解决了

直接使用UI文件

也就是在代码中直接加载UI文件资源。

from PySide6.QtCore import QFile
from PySide6.QtUiTools import QUiLoader
from PySide6.QtWidgets import QWidget, QApplication


class Index_UI:

    def load_ui(self, file_name):
        loader = QUiLoader()
        file = QFile(file_name)
        file.open(QFile.ReadOnly)
        ui = loader.load(file)
        file.close()
        return ui


if __name__ == '__main__':
    app = QApplication([])
    index = Index_UI().load_ui(r'UI\index.ui')
    index.show()
    app.exec()

代码解读:代码是通过读取UI文件的方式进行加载的。代码还可以再重新封装一下:

from PySide6.QtCore import QFile
from PySide6.QtUiTools import QUiLoader
from PySide6.QtWidgets import QWidget, QApplication
import resources_rc

class Index_UI:
    def __init__(self):
        self.ui = None

    def load_ui(self, file_name):
        loader = QUiLoader()
        file = QFile(file_name)
        file.open(QFile.ReadOnly)
        self.ui = loader.load(file)
        file.close()
        self.ui.show()


if __name__ == '__main__':
    app = QApplication([])
    index = Index_UI()
    index.load_ui(r'UI\index.ui')
    app.exec()

这样子就能更好的使用ui实例了。这样的话,就比第一种方式多用两个模块,代码看起来也没有那么的优雅。好处就是不用像之前那样,疯狂的转换UI文件了。两种方式二选一,主要还是看自己,博主习惯第一种方式了。

展示结果

注意:上述代码中资源文件换位置之后,UI文件没有图标,需要参考文章二重新设置一下icon,设置完成后再次转换后运行代码即可解决没有图标的问题

下一章讲述designer的具体使用,以及工具UI的具体布局

相关推荐
硬件人某某某7 分钟前
基于Django的手办交易平台~源码
后端·python·django
升讯威在线客服系统19 分钟前
如何通过 Docker 在没有域名的情况下快速上线客服系统
java·运维·前端·python·docker·容器·.net
久绊A2 小时前
Python 基本语法的详细解释
开发语言·windows·python
Hylan_J6 小时前
【VSCode】MicroPython环境配置
ide·vscode·python·编辑器
莫忘初心丶6 小时前
在 Ubuntu 22 上使用 Gunicorn 启动 Flask 应用程序
python·ubuntu·flask·gunicorn
cpp_learners6 小时前
QT 引入Quazip和Zlib源码工程到项目中,无需编译成库,跨平台,压缩进度
qt·zlib·加密压缩·quazip
失败尽常态5239 小时前
用Python实现Excel数据同步到飞书文档
python·excel·飞书
2501_904447749 小时前
OPPO发布新型折叠屏手机 起售价8999
python·智能手机·django·virtualenv·pygame
青龙小码农9 小时前
yum报错:bash: /usr/bin/yum: /usr/bin/python: 坏的解释器:没有那个文件或目录
开发语言·python·bash·liunx
大数据追光猿9 小时前
Python应用算法之贪心算法理解和实践
大数据·开发语言·人工智能·python·深度学习·算法·贪心算法