Как связать приложение pyqt5 для работы с ресурсами (чтобы добавить изображения в мой графический интерфейс)

Я хочу добавить изображения в мой PyQt5 GUI с помощью метода "resources", чтобы позже я мог использовать PyInstaller для создания кроссплатформенных.exe-файлов. До сих пор я добавлял свои изображения по пути к файлу (без использования файлов ресурсов.qrc и т. Д.), Но это плохо для PyInstaller и т. Д.

Ниже мои файлы.

Моя проблема в том, что когда я пытаюсь запустить main.py GUI... ничего не происходит. Я не получаю никаких сообщений об ошибках или чего-то... ничего.

Вот очень упрощенная (надуманный пример) версия того, что я хочу сделать:

Это мой файл main.py:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file '.\main.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(241, 133)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(90, 20, 50, 50))
        self.label.setMinimumSize(QtCore.QSize(0, 1))
        self.label.setText("")
        self.label.setPixmap(QtGui.QPixmap(":/icons/png/001-success.png"))
        self.label.setScaledContents(True)
        self.label.setObjectName("label")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 241, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))

import icons_rc

это было сгенерировано из main.ui:

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>241</width>
    <height>133</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <widget class="QLabel" name="label">
    <property name="geometry">
     <rect>
      <x>90</x>
      <y>20</y>
      <width>50</width>
      <height>50</height>
     </rect>
    </property>
    <property name="minimumSize">
     <size>
      <width>0</width>
      <height>1</height>
     </size>
    </property>
    <property name="text">
     <string/>
    </property>
    <property name="pixmap">
     <pixmap resource="D:/HACKATHON/PyQt_resources/icons.qrc">:/icons/png/001-success.png</pixmap>
    </property>
    <property name="scaledContents">
     <bool>true</bool>
    </property>
   </widget>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>241</width>
     <height>21</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources>
  <include location="D:/HACKATHON/PyQt_resources/icons.qrc"/>
 </resources>
 <connections/>
</ui>

и вот файл icons.qrc:

<RCC>
  <qresource>
    <file>icons/png/001-success.png</file>
  </qresource>
</RCC>

и из этого я сгенерировал файл с именем icons_rc.py, используя скрипт pyrcc.

Кто-нибудь знает, как заставить этот очень простой графический интерфейс работать. Это просто окно с одним изображением посередине...

0 ответов

Другие вопросы по тегам