Не импортируются иконки из .qrc в .py

Я создала интерфейс в Qt Designer, в нем использовала файл ресурсов resource.qrc для иконок в приложении.
Сохранила .ui из Designer в файл .py,
затем конвертировала resource.qrc в rc_resource.py с помощью команды:

pyside6-rcc resource.qrc -o rc_resource.py

Сразу скажу, что в PyQt5 точно такая же проблема.

Однако, когда я пытаюсь из Main файла запустить приложение выдается ошибка:

"ModuleNotFoundError: No module named 'rc_resource'".

Импорт в файле ui_MainWindow есть, но явно происходит что-то не так.

Если я убираю импорт rc_resource и заменяю путь к иконкам напрямую в папку, где они хранятся, а не в qrc, иконки все равно не видны.
ui_MainWindow и rc_resource хранятся в одной папке.

Помогите, решить проблему. https://github.com/Masik84/my_prog

resource.qrc

<RCC>
  <qresource prefix="icons">
    <file>Icons/minus.png</file>
    <file>Icons/alignleft2.png</file>
    ...
    <file>Icons/x.png</file>
  </qresource>
</RCC>

ui_MainWindow.py

from PySide6.QtWidgets import (QApplication, QFrame, QHBoxLayout, QMainWindow,
    QPushButton, QSizePolicy, QVBoxLayout, QWidget)

import rc_resource

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        if not MainWindow.objectName():
         ...

Main.py

import sys

from PySide6 import QtCore, QtGui
from PySide6.QtGui import QColor
from PySide6.QtWidgets import QMainWindow, QDialog, QApplication, QGraphicsDropShadowEffect

from screens.ui_MainWindow import *

class Welcome_Screen(QMainWindow):
    def __init__(self):
        super(Welcome_Screen,self).__init__()
        self.animation = None
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Welcome_Screen()
    sys.exit(app.exec_())

Ответы (1 шт):

Автор решения: S. Nick

Замените в модуле ui_MainWindow.py

import rc_resource

на

import screens.rc_resource

Main.py

import sys
'''
from PySide6 import QtCore, QtGui
from PySide6.QtGui import QColor
from PySide6.QtWidgets import QMainWindow, QDialog, QApplication, QGraphicsDropShadowEffect
'''
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *

from screens.ui_MainWindow import Ui_MainWindow


class Welcome_Screen(QMainWindow):
    def __init__(self):
        super(Welcome_Screen, self).__init__()
        
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        
        self.animation = None


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Welcome_Screen()
    window.show()
    sys.exit(app.exec_())

ui_MainWindow.py

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(835, 572)
        MainWindow.setAutoFillBackground(True)
        MainWindow.setStyleSheet("")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setAutoFillBackground(False)
        self.centralwidget.setStyleSheet("")
        self.centralwidget.setObjectName("centralwidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setSpacing(0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.header = QtWidgets.QFrame(self.centralwidget)
        self.header.setMinimumSize(QtCore.QSize(0, 0))
        self.header.setMaximumSize(QtCore.QSize(16777215, 50))
        self.header.setAutoFillBackground(False)
        self.header.setStyleSheet(".QFrame#header{\n"
"background-color: qlineargradient(spread:pad, x1:0.1, y1:0.215909, x2:0.959, y2:0.909091, stop:0 rgba(52, 146, 35, 255), stop:1 rgba(195, 244, 101, 255));\n"
"}")
        self.header.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.header.setFrameShadow(QtWidgets.QFrame.Raised)
        self.header.setLineWidth(0)
        self.header.setObjectName("header")
        self.hboxlayout = QtWidgets.QHBoxLayout(self.header)
        self.hboxlayout.setContentsMargins(0, 0, 0, 0)
        self.hboxlayout.setSpacing(0)
        self.hboxlayout.setObjectName("hboxlayout")
        self.top_left_menu = QtWidgets.QFrame(self.header)
        self.top_left_menu.setMinimumSize(QtCore.QSize(0, 0))
        self.top_left_menu.setMaximumSize(QtCore.QSize(45, 50))
        self.top_left_menu.setStyleSheet("QFrame#top_left_menu{\n"
"background-color: qlineargradient(spread:pad, x1:0, y1:0.506, x2:1, y2:0.5, stop:0 rgba(52, 146, 35, 255), stop:1 rgba(195, 244, 101, 255));\n"
"}\n"
"\n"
"QPushButton{\n"
"    border-radius: 5px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    background-color: rgb(93, 183, 42);\n"
"}")
        self.top_left_menu.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.top_left_menu.setFrameShadow(QtWidgets.QFrame.Raised)
        self.top_left_menu.setObjectName("top_left_menu")
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.top_left_menu)
        self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_3.setSpacing(0)
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.main_menu_btn = QtWidgets.QPushButton(self.top_left_menu)
        self.main_menu_btn.setMinimumSize(QtCore.QSize(45, 50))
        self.main_menu_btn.setMaximumSize(QtCore.QSize(16777215, 16777215))
        self.main_menu_btn.setStyleSheet("")
        self.main_menu_btn.setText("")
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/icons/Icons/menu2.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.main_menu_btn.setIcon(icon)
        self.main_menu_btn.setIconSize(QtCore.QSize(24, 24))
        self.main_menu_btn.setObjectName("main_menu_btn")
        self.horizontalLayout_3.addWidget(self.main_menu_btn)
        self.hboxlayout.addWidget(self.top_left_menu)
        self.frame = QtWidgets.QFrame(self.header)
        self.frame.setMaximumSize(QtCore.QSize(16777215, 50))
        self.frame.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.hboxlayout.addWidget(self.frame)
        self.top_right_btn = QtWidgets.QFrame(self.header)
        self.top_right_btn.setMaximumSize(QtCore.QSize(100, 50))
        self.top_right_btn.setStyleSheet("QPushButton{\n"
"    border-radius: 5px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    background-color: rgb(93, 183, 42);\n"
"}")
        self.top_right_btn.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.top_right_btn.setFrameShadow(QtWidgets.QFrame.Raised)
        self.top_right_btn.setObjectName("top_right_btn")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.top_right_btn)
        self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_2.setSpacing(0)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.restore_btn = QtWidgets.QPushButton(self.top_right_btn)
        self.restore_btn.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.restore_btn.setText("")
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(":/icons/Icons/minus.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.restore_btn.setIcon(icon1)
        self.restore_btn.setIconSize(QtCore.QSize(24, 24))
        self.restore_btn.setObjectName("restore_btn")
        self.horizontalLayout_2.addWidget(self.restore_btn)
        self.min_size_btn = QtWidgets.QPushButton(self.top_right_btn)
        self.min_size_btn.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.min_size_btn.setText("")
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(":/icons/Icons/maximize2.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.min_size_btn.setIcon(icon2)
        self.min_size_btn.setIconSize(QtCore.QSize(24, 24))
        self.min_size_btn.setObjectName("min_size_btn")
        self.horizontalLayout_2.addWidget(self.min_size_btn)
        self.close_btn = QtWidgets.QPushButton(self.top_right_btn)
        self.close_btn.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))

# !!!  ------------------------------------------------> v       
        self.close_btn.setStyleSheet("QPushButton {border-radius: 10px;}")

        
        self.close_btn.setText("")
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(":/icons/Icons/x.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.close_btn.setIcon(icon3)
        self.close_btn.setIconSize(QtCore.QSize(24, 24))
        self.close_btn.setObjectName("close_btn")
        self.horizontalLayout_2.addWidget(self.close_btn)
        self.hboxlayout.addWidget(self.top_right_btn)
        self.verticalLayout.addWidget(self.header)
        self.central_part = QtWidgets.QFrame(self.centralwidget)
        self.central_part.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.central_part.setFrameShadow(QtWidgets.QFrame.Raised)
        self.central_part.setObjectName("central_part")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.central_part)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setSpacing(0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.left_menu = QtWidgets.QFrame(self.central_part)
        self.left_menu.setMaximumSize(QtCore.QSize(45, 16777215))
        self.left_menu.setStyleSheet("QFrame#left_menu{\n"
"    background-color: qlineargradient(spread:pad, x1:0, y1:0.506, x2:1, y2:0.5, stop:0 rgba(52, 146, 35, 255), stop:1 rgba(195, 244, 101, 255));\n"
"}\n"
"\n"
"QPushButton{\n"
"    padding: 20px 10px;\n"
"    border: none;\n"
"    border-radius: 10px;\n"
"    color: #000000\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    background-color: rgb(93, 183, 42);\n"
"}")
        self.left_menu.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.left_menu.setFrameShadow(QtWidgets.QFrame.Raised)
        self.left_menu.setLineWidth(0)
        self.left_menu.setObjectName("left_menu")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.left_menu)
        self.verticalLayout_2.setContentsMargins(7, 0, 0, 0)
        self.verticalLayout_2.setSpacing(0)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.home_btn = QtWidgets.QPushButton(self.left_menu)
        self.home_btn.setMinimumSize(QtCore.QSize(110, 0))
        self.home_btn.setStyleSheet("background-image: url(:/icons/Icons/home6.png);\n"
"font: 700 11pt \"Segoe UI\";\n"
"color: rgb(139, 0, 0);\n"
"background-repeat: none;\n"
"padding-left: 45px;\n"
"background-position: center left;")
        self.home_btn.setObjectName("home_btn")
        self.verticalLayout_2.addWidget(self.home_btn)
        self.bonus_btn = QtWidgets.QPushButton(self.left_menu)
        self.bonus_btn.setMinimumSize(QtCore.QSize(110, 0))
        self.bonus_btn.setStyleSheet("background-image: url(:/icons/Icons/bonuses2.png);\n"
"font: 700 11pt \"Segoe UI\";\n"
"color: rgb(139, 0, 0);\n"
"background-repeat: none;\n"
"padding-left: 45px;\n"
"background-position: center left;")
        self.bonus_btn.setIconSize(QtCore.QSize(16, 16))
        self.bonus_btn.setObjectName("bonus_btn")
        self.verticalLayout_2.addWidget(self.bonus_btn)
        self.invoice_btn = QtWidgets.QPushButton(self.left_menu)
        self.invoice_btn.setMinimumSize(QtCore.QSize(110, 0))
        self.invoice_btn.setStyleSheet("background-image: url(:/icons/Icons/invoices.png);\n"
"font: 700 11pt \"Segoe UI\";\n"
"color: rgb(139, 0, 0);\n"
"background-repeat: none;\n"
"padding-left: 43px;\n"
"background-position: center left;")
        self.invoice_btn.setObjectName("invoice_btn")
        self.verticalLayout_2.addWidget(self.invoice_btn)
        self.client_btn = QtWidgets.QPushButton(self.left_menu)
        self.client_btn.setMinimumSize(QtCore.QSize(110, 0))
        self.client_btn.setStyleSheet("background-image: url(:/icons/Icons/customers.png);\n"
"font: 700 11pt \"Segoe UI\";\n"
"color: rgb(139, 0, 0);\n"
"background-repeat: none;\n"
"padding-left: 45px;\n"
"background-position: center left;")
        self.client_btn.setObjectName("client_btn")
        self.verticalLayout_2.addWidget(self.client_btn)
        self.product_btn = QtWidgets.QPushButton(self.left_menu)
        self.product_btn.setMinimumSize(QtCore.QSize(110, 0))
        self.product_btn.setStyleSheet("background-image: url(:/icons/Icons/products2.png);\n"
"font: 700 11pt \"Segoe UI\";\n"
"color: rgb(139, 0, 0);\n"
"background-repeat: none;\n"
"padding-left: 45px;\n"
"background-position: center left;")
        self.product_btn.setObjectName("product_btn")
        self.verticalLayout_2.addWidget(self.product_btn)
        self.horizontalLayout.addWidget(self.left_menu)
        self.main_part = QtWidgets.QFrame(self.central_part)
        self.main_part.setAutoFillBackground(False)
        self.main_part.setStyleSheet("background-color: qlineargradient(spread:pad, x1:0.194037, y1:0.821, x2:0.534, y2:0.422619, stop:0.0105263 rgba(44, 146, 25, 255), stop:1 rgba(195, 244, 101, 255));\n"
"background-position: center;\n"
"background-repeat: no-repeat;\n")

# ???"background-size: 100%")

        self.main_part.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.main_part.setFrameShadow(QtWidgets.QFrame.Raised)
        self.main_part.setLineWidth(0)
        self.main_part.setObjectName("main_part")
        self.horizontalLayout.addWidget(self.main_part)
        self.verticalLayout.addWidget(self.central_part)
        self.futter_menu = QtWidgets.QFrame(self.centralwidget)
        self.futter_menu.setMaximumSize(QtCore.QSize(16777215, 50))
        self.futter_menu.setStyleSheet("QFrame#futter_menu{\n"
"    background-color: qlineargradient(spread:pad, x1:0.1, y1:0.215909, x2:0.959, y2:0.909091, stop:0 rgba(52, 146, 35, 255), stop:1 rgba(195, 244, 101, 255));\n"
"}\n"
"\n"
"")
        self.futter_menu.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.futter_menu.setFrameShadow(QtWidgets.QFrame.Raised)
        self.futter_menu.setLineWidth(0)
        self.futter_menu.setObjectName("futter_menu")
        self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.futter_menu)
        self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_4.setSpacing(0)
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
        self.frame_2 = QtWidgets.QFrame(self.futter_menu)
        self.frame_2.setMaximumSize(QtCore.QSize(16777215, 50))
        self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_2.setObjectName("frame_2")
        self.horizontalLayout_4.addWidget(self.frame_2)
        self.frame_3 = QtWidgets.QFrame(self.futter_menu)
        self.frame_3.setMaximumSize(QtCore.QSize(150, 50))
        self.frame_3.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_3.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_3.setObjectName("frame_3")
        self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.frame_3)
        self.horizontalLayout_5.setObjectName("horizontalLayout_5")
        self.back_btn = QtWidgets.QPushButton(self.frame_3)
        self.back_btn.setMinimumSize(QtCore.QSize(0, 27))
        self.back_btn.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.back_btn.setStyleSheet("QPushButton{\n"
"    border-radius: 5px;\n"
"    font: 700 10pt \"Segoe UI\";\n"
"    color: rgb(139, 0, 0);\n"
"    background-color: qlineargradient(spread:pad, x1:0.1, y1:0.215909, x2:0.959, y2:0.909091, stop:0 rgba(52, 146, 35, 255), stop:1 rgba(195, 244, 101, 255));\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    background-color: rgb(93, 183, 42);\n"
"}")
        self.back_btn.setObjectName("back_btn")
        self.horizontalLayout_5.addWidget(self.back_btn)
        self.horizontalLayout_4.addWidget(self.frame_3)
        self.verticalLayout.addWidget(self.futter_menu)
        MainWindow.setCentralWidget(self.centralwidget)

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.home_btn.setText(_translate("MainWindow", "HOME"))
        self.bonus_btn.setText(_translate("MainWindow", "Bonus"))
        self.invoice_btn.setText(_translate("MainWindow", "Invoice"))
        self.client_btn.setText(_translate("MainWindow", "Clients"))
        self.product_btn.setText(_translate("MainWindow", "Product"))
        self.back_btn.setText(_translate("MainWindow", "Back"))

# !!!  vvvvvvvv <-------------------------------------------------------------   !!!
import screens.rc_resource

введите сюда описание изображения

→ Ссылка