将资源文件导入 PyQt 代码?
Importing resource file to PyQt code?
我看过Qt的纪录片和很多与这个不太相似的问题,但我仍然没有弄清楚我该怎么做。
我不完全确定如何将资源文件导入 Python 代码,所以像素图显示没有任何问题。
我将所有文件都放在同一个目录中,我创建了 qrc。文件并编译它:rcc -binary resources.qrc -o res.rcc
生成资源文件。
我导入了 res_rcc 但标签上的像素图仍然没有显示:
import res_rcc
这是我的 qrc 中的内容。文件:
<RCC>
<qresource prefix="newPrefix">
<file>download.jpeg</file>
</qresource>
</RCC>
问题:
如何在 PyQt 代码中导入资源文件? | 如果像素图与 .qrc 资源文件在同一个目录中,我还需要指定完整路径吗?
对于 pyqt,您必须使用 pyrcc4,它相当于 python 的 rcc。
pyrcc4 -o resources.py resources.qrc
这会生成 resources.py 模块,需要在 python 代码中导入该模块才能使资源可用。
import resources
要在您的代码中使用资源,您必须使用“:/”前缀:
例子
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import resources
pixmap = QPixmap(":/newPrefix/download.jpeg")
在PyQt5中,我们应该在命令行中编写
pyrcc5 -o resources.py resource/resources.qrc
因为,我们需要在代码中生成一个resource.py来导入。现在我们可以输入
import resources
在我们的 python 代码中
除了上述精彩的答案之外,如果您还希望能够从 QtCreator 本身设置图标(而不是必须在代码中执行 say setWindowIcon(QIcon('://images/app_icon.ico'))
行),您可以这样做:
pyrcc5 -o resources_rc.py resources.qrc
cd ui
pyuic5 -o dialog.py dialog.ui
(请注意 pyuic5
出于某种原因自动导入 resources_rc
而不是 resources
;因此是上面指定的新名称)
您确定的地方:
...
</tabstops>
<resources>
<include location="../resources.qrc"/>
</resources>
<connections>
...
大约出现在您的 dialog.ui
文件中(在 tabstops
和 connections
之间)。我认为要自动获取它,您可以创建一个虚拟 C++ 项目并将您的 .ui 文件添加到该虚拟项目,然后将一个新的 Qt 资源文件添加到该项目。完成后,您可以删除所有保留 .ui 文件和 .qrc 文件的内容。如果您碰巧将 resources.qrc
复制到另一个目录,则关闭并重新打开 dialog.ui
文件将提示您输入新位置。
现在您可以在 QtCreator 的 属性 资源管理器中设置资源:windowIcon > Choose Resource > (click on the root) > (your files should show up now) > (select app_icon.ico)
.
我刚刚检查了一个新创建的 mainwindow.ui
,如果您在 Qt Creator 中以 Text Edit 模式打开文件,它会显示 <resource />
斯图比群岛简单地插入那里(使用其他程序)出于某种原因,在 Notepad++ 中打开新创建的 .ui 文件没有显示它。
关闭和重新打开文件时,您必须实际关闭文件(不是 "Reload" - 不起作用)并再次打开它。然后 "add image from resources" 对话框中的资源根将是非空的。
我看过Qt的纪录片和很多与这个不太相似的问题,但我仍然没有弄清楚我该怎么做。
我不完全确定如何将资源文件导入 Python 代码,所以像素图显示没有任何问题。
我将所有文件都放在同一个目录中,我创建了 qrc。文件并编译它:rcc -binary resources.qrc -o res.rcc
生成资源文件。
我导入了 res_rcc 但标签上的像素图仍然没有显示:
import res_rcc
这是我的 qrc 中的内容。文件:
<RCC>
<qresource prefix="newPrefix">
<file>download.jpeg</file>
</qresource>
</RCC>
问题:
如何在 PyQt 代码中导入资源文件? | 如果像素图与 .qrc 资源文件在同一个目录中,我还需要指定完整路径吗?
对于 pyqt,您必须使用 pyrcc4,它相当于 python 的 rcc。
pyrcc4 -o resources.py resources.qrc
这会生成 resources.py 模块,需要在 python 代码中导入该模块才能使资源可用。
import resources
要在您的代码中使用资源,您必须使用“:/”前缀:
例子
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import resources
pixmap = QPixmap(":/newPrefix/download.jpeg")
在PyQt5中,我们应该在命令行中编写
pyrcc5 -o resources.py resource/resources.qrc
因为,我们需要在代码中生成一个resource.py来导入。现在我们可以输入
import resources
在我们的 python 代码中
除了上述精彩的答案之外,如果您还希望能够从 QtCreator 本身设置图标(而不是必须在代码中执行 say setWindowIcon(QIcon('://images/app_icon.ico'))
行),您可以这样做:
pyrcc5 -o resources_rc.py resources.qrc
cd ui
pyuic5 -o dialog.py dialog.ui
(请注意 pyuic5
出于某种原因自动导入 resources_rc
而不是 resources
;因此是上面指定的新名称)
您确定的地方:
...
</tabstops>
<resources>
<include location="../resources.qrc"/>
</resources>
<connections>
...
大约出现在您的 dialog.ui
文件中(在 tabstops
和 connections
之间)。我认为要自动获取它,您可以创建一个虚拟 C++ 项目并将您的 .ui 文件添加到该虚拟项目,然后将一个新的 Qt 资源文件添加到该项目。完成后,您可以删除所有保留 .ui 文件和 .qrc 文件的内容。如果您碰巧将 resources.qrc
复制到另一个目录,则关闭并重新打开 dialog.ui
文件将提示您输入新位置。
现在您可以在 QtCreator 的 属性 资源管理器中设置资源:windowIcon > Choose Resource > (click on the root) > (your files should show up now) > (select app_icon.ico)
.
我刚刚检查了一个新创建的 mainwindow.ui
,如果您在 Qt Creator 中以 Text Edit 模式打开文件,它会显示 <resource />
斯图比群岛简单地插入那里(使用其他程序)出于某种原因,在 Notepad++ 中打开新创建的 .ui 文件没有显示它。
关闭和重新打开文件时,您必须实际关闭文件(不是 "Reload" - 不起作用)并再次打开它。然后 "add image from resources" 对话框中的资源根将是非空的。