Как расположить фото в виджете pyqt5
Подскажите с проблемой:
Работаю с PyQt5 (QPixmap), вставляю фотографию в виджет QLabel.
Указываю путь к расположению фотографии и она располагается на виджете.
Но если удаляю фотографию из папки, где находится проект, то соответственно и открывать то нечего.\
Как можно установить фото так, чтобы оно уже всегда загружалось, не зависимо от того, есть это фото в папке с проектом или нет?
Для начала захожу в папку с проектом.py. Создаю текстовый док., прописываю туда эти строки:
<RCC>
<qresource prefix="main">
<file>photo.jpg</file>
</qresource>
</RCC>
сохраняю как resources.qrc
Далее прописываю в ком. строке:
pyrcc5 -o resources.py resources.qrc
В основном коде прописываю import resources, но фото также не появилось.
Рабочий код, когда фото расположено в папке с проектом:
from PyQt5.QtWidgets import QWidget, QLabel
from PyQt5.QtGui import QPixmap
import sys
from PyQt5.QtWidgets import QApplication
class ImageViewer(QWidget):
def __init__(self):
super().__init__()
label = QLabel(self)
pixmap = QPixmap('photo.jpg')
label.setPixmap(pixmap)
self.resize(pixmap.width(), pixmap.height())
self.setWindowTitle('PyQt5 Image Viewer')
if __name__ == '__main__':
app = QApplication(sys.argv)
image_viewer = ImageViewer()
image_viewer.show()
sys.exit(app.exec_())
Ответы (1 шт):
1.Создаем файл ресурсов например kik.qrc
<RCC>
<qresource prefix="/">
<file>images/head.jpg</file>
</qresource>
</RCC>
Предполагаем, что картинка head.jpg находится в каталоге images (images/head.jpg)
- Загрузить изображение из файла ресурсов:
Команда преобразования pyrcc5 kik.qrc -o kik_rc.py
Этот способ заключается в том, чтобы преобразовать файл kik.qrc в файл kik_rc.py
Все картинка в kik_rc.py
- Обратите внимание как прописать путь к изображению !
# ----->>>> v видите двоеточие !
pixmap = QPixmap(':/images/head.jpg')
q1201338.py
from PyQt5.QtWidgets import QWidget, QLabel
from PyQt5.QtGui import QPixmap
import sys
from PyQt5.QtWidgets import QApplication
import kik_rc # Здесь мы импортируем наше изображение
class ImageViewer(QWidget):
def __init__(self):
super().__init__()
label = QLabel(self) # v
pixmap = QPixmap(':/images/head.jpg') # ':/images/head.jpg'
label.setPixmap(pixmap)
self.resize(pixmap.width(), pixmap.height())
self.setWindowTitle('PyQt5 Image Viewer')
if __name__ == '__main__':
app = QApplication(sys.argv)
image_viewer = ImageViewer()
image_viewer.show()
sys.exit(app.exec_())
