将相对图像路径绑定到 *.py 文件

Bind relative image path to *.py file

我正在尝试创建包含图像目录的 PyQt 应用程序。问题是,如果我尝试使用它的相对路径加载图像,它的结果将取决于应用程序将从中启动的当前目录。

例如,我的项目结构如下:

qttest/
├── gui.py
└── icon.png

gui.py 来源:

import sys

from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel

app = QApplication(sys.argv)

main = QMainWindow()
lbl = QLabel()
lbl.setPixmap(QPixmap("icon.png"))
main.setCentralWidget(lbl)
main.show()

sys.exit(app.exec_())

现在,如果我尝试使用 python3 gui.py 从项目目录启动它,它将成功加载图像并显示它,但如果我使用 python3 qttest/gui.py 从父目录启动它,它不会'没用。

有没有什么方法可以将图像绑定到使用它的源文件,而无需对完整图像路径进行硬编码?

import os

path = os.path.dirname(os.path.abspath(__file__))
lbl.setPixmap(QPixmap(os.path.join(path, 'icon.png')))