首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在qss定义中使用FBS的get资源方法?

在qss定义中使用FBS的get资源方法?
EN

Stack Overflow用户
提问于 2020-06-18 15:26:44
回答 1查看 209关注 0票数 1

我有一个独立的qss样式表,它包含我的整个应用程序的样式表定义。我需要添加一个关闭按钮作为背景图像,因为我找不到使用内置图标的文档。

代码语言:javascript
复制
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;
}
代码语言:javascript
复制
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下面。

因为我不能使用fstring,而大括号是qt的一部分。和使用python格式的这个答案,但是由于我有一些rgba颜色值,其中也包含%,所以我一直得到一些关键错误。

由于我不能使用%ages或大括号,所以我正在考虑用get_resource构建一个qproperty,但我不知道如何构建。我需要我的qss交叉兼容,不能逃脱我的花括号。

我的主要问题是,当我使用fbs冻结打包应用程序wtih FBS时,映像将不可用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-07 01:51:19

根据@eyllanesc的建议,这是我的解决方案。rcc文件,

代码语言:javascript
复制
<RCC>
  <qresource>
    <file alias="closeIcon">close.png</file>
  </qresource>
</RCC>

shell命令,

代码语言:javascript
复制
pyrcc5 -o resources.py resources.rcc

这是样式表。

代码语言:javascript
复制
TabBarPlus::close-button {
    background-image: url(:/closeIcon);
    padding: 0px;
    margin: 0px;
    border-radius: 2px;
    background-position: center center;
    background-repeat: none;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62453570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档