【发布时间】:2023-03-16 04:15:01
【问题描述】:
我有一个单独的 qss 样式表,其中包含我的整个应用程序的样式表定义。我需要添加一个关闭按钮作为背景图片,因为我找不到有关使用内置图标的文档。
customTabBar::close-button {
padding: 0px;
margin: 0px;
border-radius: 2px;
border-color: rgba(0, 0, 0, 50%);
background-image: url(%(closeIcon)s);
background-position: center center;
background-repeat: none;
}
from fbs_runtime.application_context.PyQt5 import ApplicationContext
import qstylizer.parser
customIcons = {
"customTabBar::closeButton.backgroundImage": f"url({app.get_resource('ui/close.png')})",
}
app = ApplicationContext()
with open(app.get_resource("app.qss"), "r") as stylesheet:
css = qstylizer.parser.parse(stylesheet.read())
for key, value in customIcons.items():
property = key.split(".")
css[property[0]][property[1]].setValue(value)
app.app.setStyleSheet(css.toString())
文件存储在默认的 fbs 结构中,位于 src/main/resource/base/ui/*.png
因为我不能使用带有花括号的 fstrings 作为 qt 的一部分。 this answer 使用 python 字符串格式,但由于我有一些 rgba 颜色值也有 %,所以我不断收到关键错误。
由于我不能使用 %ages 或花括号,我正在考虑使用 get_resource 构建一个 qproperty,但我不确定如何。我需要我的 qss 交叉兼容并且无法逃脱我的花括号。
我的主要问题是当我使用 fbs 打包应用程序时,图像不可用,使用 FBS 冻结
【问题讨论】:
-
@eyllanesc 我认为我的问题有点直截了当,但我确定我添加了一个 MRE。
-
有些东西没有定义,比如fileImporter是什么,图标在哪里等
-
抱歉,我的文件导入器是一个扩展,用于获取具有一些附加条件的资源。对于图像文件,您现在可以使用任何东西。我只关心文件加载是否正确,同时保持 qss 结构
-
扑通,你必须使用pyrcc5:
pyrcc5 your.qrc -o your_rc.py