2015-10-31 4 views
2

Я пытаюсь создать PyQt-приложение, содержащее каталог с изображениями. Проблема в том, что если я пытаюсь загрузить изображение, используя его относительный путь, результат будет зависеть от текущего каталога, из которого будет запущено приложение.Связать относительный путь изображения к * .py файлу

Например, я имею проект со следующей структурой:

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, он не будет работать.

Есть ли способ связать изображение с исходным файлом, где он используется без жесткого кодирования пути полного изображения?

+0

Вы можете [получить путь к исходному файлу py] (http://stackoverflow.com/a/7162404/1771479). – agold

+0

Вы можете использовать [Qt Resource Sysytem] (http://stackoverflow.com/a/11852147/984421). Это позволит вам сделать это, например. 'QPixmap ("QRC: /icon.png")'. – ekhumoro

ответ

2
import os 

path = os.path.dirname(os.path.abspath(__file__)) 
lbl.setPixmap(QPixmap(os.path.join(path, 'icon.png'))) 
Смежные вопросы