pixmap = QPixmap("../icons/bg2.jpg")
优点:简单直接:对于小型项目或快速原型开发,直接引用资源路径是最简单直接的方法易于调试:直接修改资源文件,不需要重新编译资源,可以立即看到效果缺点:部署复杂:在部署应用程序时,需要确保所有资源文件的路径都正确,并且随应用程序一起正确分发性能考虑:大量使用外部资源文件可能会影响应用程序的启动时间和运行性能QRC文件使用 PySide6 中使用 QRC 文件可以有效地管理和访问本地应用程序嵌入的资源,如图像、图标、样式表、字体、音频和视频等QRC 文件是一个 XML 文件,它列出了包含在应用程序中的资源这些资源在编译时会被嵌入到应用程序的二进制文件中,使得在运行时可以方便地访问它们优点:便于部署:所有资源都被编译到应用程序的二进制文件中,简化了部署过程,不需要担心资源文件的丢失或路径问题性能提升:资源被嵌入到应用程序中,可以减少应用程序启动时加载外部资源的时间跨平台一致性:确保应用程序在不同平台和配置中表现一致,因为资源文件已经被嵌入缺点:更新资源需要重新编译:每次资源更新后,都需要重新编译 QRC 文件,这可能会增加开发过程中的时间有门槛,需要学习QRC:相比直接引用资源路径,使用 QRC 需要学习额外的步骤,如创建 QRC 文件和编译资源可参考:https://doc.qt.io/qt-6/resources.html不支持从远程服务器加载资源2、Pyside6 QRC文件使用以下是如何使用 QRC 文件的步骤:步骤 1: 创建 QRC 文件创建一个 QRC 文件(例如 resources.qrc),并在其中定义你的资源例如:<RCC> <qresource prefix="/images"> <!-- 相对rcc文件路径 --> <file alias="logo">logo.jpg</file> </qresource> <qresource prefix="/styles"> <file>style.qss</file> </qresource></RCC>
qresource标签于定义资源的集合,并且可以包含一些属性来控制资源的加载和访问方式,该标签常用属性:prefixprefix 属性定义了资源的访问路径前缀这个前缀将被用于在应用程序中引用这些资源如果没有指定 prefix,默认的前缀是根路径 /langlang 属性允许你为不同的语言环境指定不同的资源这可以用于国际化和本地化,例如,根据用户的语言设置加载不同的图片或文本file元素用于指定要包含在资源文件中的实际文件这个标签可以包含一些属性,用于更精确地控制资源的处理和引用方式,该标签常用属性:aliasalias 属性允许为文件指定一个别名,这个别名可以在应用程序中用来引用该文件如果不使用 alias,则默认使用文件的原始路径作为引用路径步骤 2: 编译 QRC 文件使用 PySide6 提供的 pyside6-rcc 命令行工具将 QRC 文件编译成 Python 代码在命令行中运行:pyside6-rcc .\qrc\resource.qrc -o .\qrc\resource_rc.py
步骤 3: 在应用程序中使用资源在 PySide6 应用程序中,首先需要导入生成的资源模块import resources_rc
然后,你可以通过指定的路径来使用这些资源,注意字符串前面需要用“:”冒号开始例如,如果你想在 QLabel 中显示一个图像,可以这样做:from PySide6.QtWidgets import QApplication, QLabelfrom PySide6.QtGui import QPixmapimport sysimport resource_rc #导入资源文件if __name__ == '__main__': app = QApplication(sys.argv) label = QLabel() label.setMinimumSize(300,300) pixmap = QPixmap(":/images/logo") #使用资源前缀和别名加载图片 label.setPixmap(pixmap) label.show() sys.exit(app.exec_())
通过这种方式,我们可以引用一下资源:样式文件资源app = QApplication([])app.setStyleSheet(":/styles/style.qss")
图像和图标文件资源pixmap = QPixmap(":/images/logo")
字体文件资源qrc文件内容:<RCC><qresource> <file alias="customFont">fonts/MyCustomFont.ttf</file></qresource></RCC>
简单示例:from PySide6.QtWidgets import QApplication, QLabelfrom PySide6.QtGui import QFontDatabase, QFontimport resources_rc # 导入资源文件app = QApplication([])# 加载字体font_id = QFontDatabase.addApplicationFont(":/customFont")font_family = QFontDatabase.applicationFontFamilies(font_id)[0]font = QFont(font_family)# 使用字体label = QLabel("Hello, world!")label.setFont(font)label.show()app.exec()
音频文件资源qrc文件内容:<RCC><qresource> <file alias="sampleVideo">media/sample_video.mp4</file> <file alias="sampleAudio">media/sample_audio.mp3</file></qresource></RCC>
简单示例:from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayoutfrom PySide6.QtMultimedia import QMediaPlayer, QMediaContentfrom PySide6.QtMultimediaWidgets import QVideoWidgetimport resources_rc # 导入资源文件app = QApplication([])window = QWidget()layout = QVBoxLayout(window)# 设置视频播放器video_widget = QVideoWidget()player = QMediaPlayer()player.setVideoOutput(video_widget)player.setMedia(QMediaContent(QUrl("qrc:/sampleVideo")))video_widget.show()player.play()# 添加到布局layout.addWidget(video_widget)window.setLayout(layout)window.show()app.exec()
3、Pyside6 加载远程资源在 PySide6 中,获取和使用远程图片和 QSS (Qt Style Sheets) 资源通常涉及网络请求来下载这些资源,可以使用标准的 Python 库如 requests 来下载资源,然后使用 PySide6 的控件加载资源安装必要的库pip install requests
获取远程图片资源from PySide6.QtWidgets import QApplication, QLabelfrom PySide6.QtGui import QPixmapfrom PySide6.QtCore import Qtimport requestsfrom io import BytesIOapp = QApplication([])# 下载图片url = "https://example.com/path/to/image.png"response = requests.get(url)image_pixmap = QPixmap()image_pixmap.loadFromData(response.content)# 显示图片label = QLabel()label.setPixmap(image_pixmap)label.setScaledContents(True) # 使图片适应标签大小label.show()app.exec()
获取远程QSS资源from PySide6.QtWidgets import QApplication, QWidgetimport requestsapp = QApplication([])# 下载 QSSurl = "https://example.com/path/to/style.qss"response = requests.get(url)style_sheet = response.text# 应用 QSSwindow = QWidget()window.setStyleSheet(style_sheet)window.show()app.exec()
(图片来源网络,侵删)
0 评论