1

与 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)

我的文件结构

文件结构

4

1 回答 1

1

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

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

然后只需使用:

btn.setIcon(QIcon(appctxt.get_resource("256.png")))
于 2021-03-26T16:51:56.210 回答