使用 fbs 时无法在 pyqt5 中设置图标

Posted

技术标签:

【中文标题】使用 fbs 时无法在 pyqt5 中设置图标【英文标题】:Unable to setIcons in pyqt5 while using fbs 【发布时间】:2021-03-26 13:28:59 【问题描述】:

与 fbs 一起使用时,我无法在我的 pyqt 应用程序中将图标设置为我的按钮。 无论我给 QIcon 函数提供什么路径,它都不会出错,因此我无法弄清楚我哪里出错了

我的代码

appctxt = ApplicationContext()
version = appctxt.build_settings["version"]

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Hellow World v" + version)
        w = QWidget()
        layout = QVBoxLayout()
        btn = QPushButton("press")
        btn.setIconSize(QSize(20, 20))
        btn.setIcon(QIcon("../resources/256.png"))
        layout.addWidget(btn)
        w.setLayout(layout)

        self.setCentralWidget(w)
if __name__ == '__main__':
    window = MainWindow()
    window.show()
    exit_code = appctxt.app.exec_()
    sys.exit(exit_code)

我的文件结构

【问题讨论】:

尝试绝对路径而不是"../resources/256.png"cwd 可能与您的预期不同 os.path.join(os.path.dirname(__file__), "..", "resources", "256.png") @mugiseyebrows 注意:FBS 是一个环境,其目标是能够轻松创建二进制文件,并且您的代码在转换为可执行文件时不起作用,因为__file__ 将没有任何意义。跨度> 【参考方案1】:

FBS 已经有一个预定义的结构,允许在脚本执行时或将其转换为二进制后获取资源。这种结构表明“资源”必须有一个“基础”文件夹,所有发行版的公共文件都在其中(类似于“图标”文件夹),因此在您的情况下,您必须重组您的应用程序并使用ApplicationContext.get_resource()

.
.
├── python
│   └── main.py
└── resources
    └── base
        ├── 1024.png
        ├── 256.png
        └── 512.png

然后只需使用:

btn.setIcon(QIcon(appctxt.get_resource("256.png")))

【讨论】:

以上是关于使用 fbs 时无法在 pyqt5 中设置图标的主要内容,如果未能解决你的问题,请参考以下文章

如何在 electron-vue js 中设置应用程序图标

无法在 iOS 11 中设置备用应用程序图标

无法更改在 Storyboard 中设置的 TabBar 项图标

如何在 TableViewCell 中设置图标的背景颜色?

在 QT 中设置和操作图标

在bottomTab配置react-native-navigation中设置图标大小