Как добавить виджет созданный в Qt Designer в QListWidget (PySide6)

Я создал виджет в Qt Designer, но при реализации его в QListWidget возникла проблема.
В теории при нажатии на элемент в списке, должен быть очищен listwidget и в нём должен быть отрисован новый виджет (Ui_Widget).
Скорее всего проблема строится в неправильном построении класса, но я не знаю как его правильно построить и по факту получаю ошибку.

AttributeError: 'Ui_Widget' object has no attribute 'titlelabel_2'

# -*- coding: utf-8 -*-
import sys

import httpx
from PySide6 import QtWidgets, QtGui, QtCore
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
                            QMetaObject, QObject, QPoint, QRect,
                            QSize, QTime, QUrl, Qt, SIGNAL)
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
                           QFont, QFontDatabase, QGradient, QIcon,
                           QImage, QKeySequence, QLinearGradient, QPainter,
                           QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QLineEdit, QMainWindow, QPushButton,
                               QSizePolicy, QStatusBar, QVBoxLayout, QWidget, QListWidget, QMessageBox, QListView,
                               QHBoxLayout, QGridLayout, QFrame, QButtonGroup, QLabel)

class Ui_Widget(object):
    def setupUi(self, Widget):
        if not Widget.objectName():
            Widget.setObjectName(u"Widget")
        Widget.resize(980, 747)
        Widget.setStyleSheet(u"background-color: #121212;")
        self.gridLayout = QGridLayout(Widget)
        self.gridLayout.setObjectName(u"gridLayout")
        self.frame = QFrame(Widget)
        self.frame.setObjectName(u"frame")
        self.frame.setFrameShape(QFrame.StyledPanel)
        self.frame.setFrameShadow(QFrame.Raised)
        self.gridLayout_2 = QGridLayout(self.frame)
        self.gridLayout_2.setObjectName(u"gridLayout_2")
        self.iconlabel_2 = QLabel(self.frame)
        self.iconlabel_2.setObjectName(u"iconlabel_2")
        self.iconlabel_2.setMinimumSize(QSize(160, 210))
        self.iconlabel_2.setMaximumSize(QSize(160, 210))
        self.iconlabel_2.setStyleSheet(u"#iconlabel_2 {\n"
                                       "    border: 2px solid #141414;\n"
                                       "    background-color: #212121;\n"
                                       "    border-radius: 20px;\n"
                                       "}")

        self.gridLayout_2.addWidget(self.iconlabel_2, 0, 0, 2, 1)

        self.descriptionlabel_2 = QLabel(self.frame)
        self.descriptionlabel_2.setObjectName(u"descriptionlabel_2")

        self.descriptionlabel_2.setStyleSheet(u"color: #bfbfbf;\n"
                                              "")
        self.descriptionlabel_2.setTextFormat(Qt.AutoText)
        self.descriptionlabel_2.setAlignment(Qt.AlignLeading | Qt.AlignLeft | Qt.AlignTop)
        self.descriptionlabel_2.setWordWrap(True)

        self.gridLayout_2.addWidget(self.descriptionlabel_2, 1, 1, 1, 1)

        self.titlelabel_2 = QLabel(self.frame)
        self.titlelabel_2.setObjectName(u"titlelabel_2")
        self.titlelabel_2.setMaximumSize(QSize(16777215, 20))
        self.titlelabel_2.setStyleSheet(u"color: #bfbfbf;\n"
                                        "")

        self.gridLayout_2.addWidget(self.titlelabel_2, 0, 1, 1, 1)

        self.serieslistWidget_2 = QListWidget(self.frame)
        self.serieslistWidget_2.setObjectName(u"serieslistWidget_2")
        self.serieslistWidget_2.setStyleSheet(u"#serieslistWidget_2 {\n"
                                              "    border: 2px solid #141414;\n"
                                              "    background-color: #212121;\n"
                                              "    border-radius: 20px;\n"
                                              "}\n"
                                              "#serieslistWidget_2::item {\n"
                                              "    background-color: #212121;    \n"
                                              "}  \n"
                                              "#serieslistWidget_2::item:selected {                             /* <---- */ \n"
                                              "    background-color: #0f0f0f;                             /* <---- */  \n"
                                              "}  \n"
                                              "#serieslistWidget_2::item:hover {                             /* <---- */ \n"
                                              "    background-color: #0f0f0f;                             /* <---- */  \n"
                                              "}")
        self.serieslistWidget_2.setProperty("isWrapping", False)

        self.gridLayout_2.addWidget(self.serieslistWidget_2, 2, 0, 1, 2)

        self.gridLayout.addWidget(self.frame, 0, 0, 1, 1)

        QMetaObject.connectSlotsByName(Widget)

    # setupUi
    def setTitle(self, text):
        self.titlelabel_2.setText(text)

    def setDescription(self, text):
        self.descriptionlabel_2.setText(text)

    def setIcon(self, imagePath):
        self.iconlabel_2.setPixmap(QtGui.QPixmap(imagePath).scaled(
            160, 210))


class CustomQWidget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(CustomQWidget, self).__init__(parent)

        self.titleLabel = QtWidgets.QLabel()
        self.titleLabel.setStyleSheet('''color: White; background-color:  #212121; font-size:24px; border-radius: 15px;
        min-height: 50px;
        max-height: 50px;
        min-width: 50px;
        max-width: 500px;
        ''')

        self.descriptionLabel = QtWidgets.QLabel()
        self.descriptionLabel.setWordWrap(True)
        self.descriptionLabel.setStyleSheet(
            'color: White; background-color: #212121; max-height: 150px; border-radius: 15px; ')

        self.vBoxLayout = QtWidgets.QVBoxLayout()
        self.vBoxLayout.addWidget(self.titleLabel, 0)
        self.vBoxLayout.addWidget(self.descriptionLabel, 1)
        self.vBoxLayout.setSpacing(0)

        self.iconQLabel = QtWidgets.QLabel()
        self.iconQLabel.setMaximumSize(160, 210)

        self.hBoxLayout = QtWidgets.QHBoxLayout(self)
        self.hBoxLayout.addWidget(self.iconQLabel, 0)
        self.hBoxLayout.addLayout(self.vBoxLayout, 1)

    def setTitle(self, text):
        self.titleLabel.setText(text)

    def setDescription(self, text):
        self.descriptionLabel.setText(text)

    def setIcon(self, imagePath):
        self.iconQLabel.setPixmap(QtGui.QPixmap(imagePath).scaled(
            160, 210))


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        if not MainWindow.objectName():
            MainWindow.setObjectName(u"MainWindow")
        MainWindow.resize(872, 567)
        MainWindow.setAutoFillBackground(False)
        MainWindow.setStyleSheet(u"background-color: #121212;")
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName(u"centralwidget")
        self.horizontalLayout = QHBoxLayout(self.centralwidget)
        self.horizontalLayout.setObjectName(u"horizontalLayout")
        self.gridLayout = QGridLayout()
        self.gridLayout.setObjectName(u"gridLayout")
        self.lineEdit = QLineEdit(self.centralwidget)
        self.lineEdit.setObjectName(u"lineEdit")
        self.lineEdit.setStyleSheet(u"QLineEdit {\n"
                                    "border: 2px solid #141414;\n"
                                    "border-radius: 10px;\n"
                                    "background-color: #212121;\n"
                                    "color: White\n"

                                    "}")

        self.gridLayout.addWidget(self.lineEdit, 0, 4, 1, 1)

        self.settingsbutton = QPushButton(self.centralwidget)
        self.buttonGroup = QButtonGroup(MainWindow)
        self.buttonGroup.setObjectName(u"buttonGroup")
        self.buttonGroup.addButton(self.settingsbutton)
        self.settingsbutton.setObjectName(u"settingsbutton")
        self.settingsbutton.setStyleSheet(u"color: #bfbfbf;")
        icon = QIcon()
        icon.addFile(u"res/pictures/settings.png", QSize(), QIcon.Normal, QIcon.Off)
        self.settingsbutton.setIcon(icon)

        self.gridLayout.addWidget(self.settingsbutton, 0, 6, 1, 1)

        self.searchbutton = QPushButton(self.centralwidget)
        self.buttonGroup.addButton(self.searchbutton)
        self.searchbutton.setObjectName(u"searchbutton")
        self.searchbutton.setStyleSheet(u"color: #bfbfbf;    ")
        icon1 = QIcon()
        icon1.addFile(u"res/pictures/search.png", QSize(), QIcon.Normal, QIcon.Off)
        self.searchbutton.setIcon(icon1)

        self.gridLayout.addWidget(self.searchbutton, 0, 5, 1, 1)

        self.horizontalLayout_3 = QHBoxLayout()
        self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")

        self.gridLayout.addLayout(self.horizontalLayout_3, 0, 0, 1, 1)

        self.achievementbutton_2 = QPushButton(self.centralwidget)
        self.buttonGroup.addButton(self.achievementbutton_2)
        self.achievementbutton_2.setObjectName(u"achievementbutton_2")
        self.achievementbutton_2.setStyleSheet(u"color: #bfbfbf;\n"
                                               "border: 2px solid #141414;\n"
                                               "border-radius: 2px;")
        icon2 = QIcon()
        icon2.addFile(u"res/pictures/favorite.png", QSize(), QIcon.Normal, QIcon.Off)
        self.achievementbutton_2.setIcon(icon2)

        self.gridLayout.addWidget(self.achievementbutton_2, 0, 1, 1, 1)

        self.folderbutton = QPushButton(self.centralwidget)
        self.buttonGroup.addButton(self.folderbutton)
        self.folderbutton.setObjectName(u"folderbutton")
        self.folderbutton.setStyleSheet(u"color: #bfbfbf;    ")
        icon3 = QIcon()
        icon3.addFile(u"res/pictures/folder.png", QSize(), QIcon.Normal, QIcon.Off)
        self.folderbutton.setIcon(icon3)

        self.gridLayout.addWidget(self.folderbutton, 0, 3, 1, 1)

        self.achievementbutton = QPushButton(self.centralwidget)
        self.buttonGroup.addButton(self.achievementbutton)
        self.achievementbutton.setObjectName(u"achievementbutton")
        self.achievementbutton.setStyleSheet(u"color: #bfbfbf;    ")
        icon4 = QIcon()
        icon4.addFile(u"res/pictures/achievement.png", QSize(), QIcon.Normal, QIcon.Off)
        self.achievementbutton.setIcon(icon4)

        self.gridLayout.addWidget(self.achievementbutton, 0, 2, 1, 1)

        self.listWidget = QListWidget(self.centralwidget)
        self.listWidget.setObjectName(u"listWidget")
        self.listWidget.viewport().setProperty("cursor", QCursor(Qt.ArrowCursor))
        self.listWidget.setToolTipDuration(-5)
        self.listWidget.setAutoFillBackground(False)
        self.listWidget.setStyleSheet(u"#listWidget {\n"
                                      "    border: 2px solid #141414;\n"
                                      "    background-color: #212121;\n"
                                      "    border-radius: 20px;\n"
                                      "}\n"
                                      "#listWidget::item {\n"
                                      "    background-color: #212121;    \n"
                                      "}  \n"
                                      "#listWidget::item:selected {                             /* <---- */ \n"
                                      "    background-color: #0f0f0f;                             /* <---- */  \n"
                                      "}  \n"
                                      "#listWidget::item:hover {                             /* <---- */ \n"
                                      "    background-color: #0f0f0f;                             /* <---- */  \n"
                                      "}")
        self.listWidget.setFrameShape(QFrame.NoFrame)
        self.listWidget.setFrameShadow(QFrame.Plain)
        self.listWidget.setLineWidth(0)
        self.listWidget.setMovement(QListView.Static)
        self.listWidget.setResizeMode(QListView.Fixed)
        self.listWidget.setSortingEnabled(False)

        self.gridLayout.addWidget(self.listWidget, 1, 0, 1, 7)

        self.horizontalLayout.addLayout(self.gridLayout)

        MainWindow.setCentralWidget(self.centralwidget)
        self.pixmap = QPixmap()
        i = 0
        listdata = [
            {
                "title": "Название",
                "description": "Описание",
                "icon": "Ok.png",
            },
        ]
        for list in listdata:
            customQWidget = CustomQWidget()
            customQWidget.setTitle(list["title"])
            customQWidget.setDescription(list["description"])

            customQWidget.setIcon(list["icon"])

            item = QtWidgets.QListWidgetItem(self.listWidget)
            item.setSizeHint(customQWidget.sizeHint())
            self.listWidget.addItem(item)
            item.setData(1, i)

            self.listWidget.setItemWidget(item, customQWidget)
            i += 1
        self.listWidget.itemClicked.connect(self.Clicked)
        self.retranslateUi(MainWindow)

        QMetaObject.connectSlotsByName(MainWindow)


    # setupUi
    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
        self.settingsbutton.setText("")
        self.searchbutton.setText("")
        self.achievementbutton_2.setText(
            QCoreApplication.translate("MainWindow", u"\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u043e\u0435", None))
        self.folderbutton.setText(
            QCoreApplication.translate("MainWindow", u"\u041a\u0430\u0442\u0430\u043b\u043e\u0433", None))
        self.achievementbutton.setText(
            QCoreApplication.translate("MainWindow", u"\u0414\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f", ))

    def Clicked(self):
        self.listWidget.clear()
        customqwidget2 = Ui_Widget()
        customqwidget2.setTitle("Тут название")
        customqwidget2.setDescription("Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum")
        customqwidget2.setIcon("ok.png")
        item = QtWidgets.QListWidgetItem(self.listWidget)
        item.setSizeHint(customqwidget2.sizeHint())
        self.listWidget.addItem(item)

        self.listWidget.setItemWidget(item, customqwidget2)


class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()

    sys.exit(app.exec())

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

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

НИКОГДА НЕ ИЗМЕНЯЙТЕ код, сгенерированный Qt Designer, НИКОГДА.
Создайте другой класс, который наследуется от соответствующего виджета, и используйте созданный класс для его заполнения.

import sys
import httpx
'''
from PySide6 import QtWidgets, QtGui, QtCore
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
                            QMetaObject, QObject, QPoint, QRect,
                            QSize, QTime, QUrl, Qt, SIGNAL)
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
                           QFont, QFontDatabase, QGradient, QIcon,
                           QImage, QKeySequence, QLinearGradient, QPainter,
                           QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QLineEdit, QMainWindow, QPushButton,
                               QSizePolicy, QStatusBar, QVBoxLayout, QWidget, QListWidget, QMessageBox, QListView,
                               QHBoxLayout, QGridLayout, QFrame, QButtonGroup, QLabel)
'''
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *


class Ui_Widget(object):
    def setupUi(self, Widget):
        if not Widget.objectName():
            Widget.setObjectName(u"Widget")
        Widget.resize(980, 747)
        Widget.setStyleSheet(u"background-color: #121212;")
        self.gridLayout = QGridLayout(Widget)
        self.gridLayout.setObjectName(u"gridLayout")
        self.frame = QFrame(Widget)
        self.frame.setObjectName(u"frame")
        self.frame.setFrameShape(QFrame.StyledPanel)
        self.frame.setFrameShadow(QFrame.Raised)
        self.gridLayout_2 = QGridLayout(self.frame)
        self.gridLayout_2.setObjectName(u"gridLayout_2")
        self.iconlabel_2 = QLabel(self.frame)
        self.iconlabel_2.setObjectName(u"iconlabel_2")
        self.iconlabel_2.setMinimumSize(QSize(160, 210))
        self.iconlabel_2.setMaximumSize(QSize(160, 210))
        self.iconlabel_2.setStyleSheet(u"#iconlabel_2 {\n"
                                       "    border: 2px solid #141414;\n"
                                       "    background-color: #212121;\n"
                                       "    border-radius: 20px;\n"
                                       "}")

        self.gridLayout_2.addWidget(self.iconlabel_2, 0, 0, 2, 1)

        self.descriptionlabel_2 = QLabel(self.frame)
        self.descriptionlabel_2.setObjectName(u"descriptionlabel_2")

        self.descriptionlabel_2.setStyleSheet(u"color: #bfbfbf;\n"
                                              "")
        self.descriptionlabel_2.setTextFormat(Qt.AutoText)
        self.descriptionlabel_2.setAlignment(Qt.AlignLeading | Qt.AlignLeft | Qt.AlignTop)
        self.descriptionlabel_2.setWordWrap(True)

        self.gridLayout_2.addWidget(self.descriptionlabel_2, 1, 1, 1, 1)

        self.titlelabel_2 = QLabel(self.frame)
        self.titlelabel_2.setObjectName(u"titlelabel_2")
        self.titlelabel_2.setMaximumSize(QSize(16777215, 20))
        self.titlelabel_2.setStyleSheet(u"color: #bfbfbf;\n"
                                        "")

        self.gridLayout_2.addWidget(self.titlelabel_2, 0, 1, 1, 1)

        self.serieslistWidget_2 = QListWidget(self.frame)
        self.serieslistWidget_2.setObjectName(u"serieslistWidget_2")
        self.serieslistWidget_2.setStyleSheet(u"#serieslistWidget_2 {\n"
                                              "    border: 2px solid #141414;\n"
                                              "    background-color: #212121;\n"
                                              "    border-radius: 20px;\n"
                                              "}\n"
                                              "#serieslistWidget_2::item {\n"
                                              "    background-color: #212121;    \n"
                                              "}  \n"
                                              "#serieslistWidget_2::item:selected {                             /* <---- */ \n"
                                              "    background-color: #0f0f0f;                             /* <---- */  \n"
                                              "}  \n"
                                              "#serieslistWidget_2::item:hover {                             /* <---- */ \n"
                                              "    background-color: #0f0f0f;                             /* <---- */  \n"
                                              "}")
        self.serieslistWidget_2.setProperty("isWrapping", False)

        self.gridLayout_2.addWidget(self.serieslistWidget_2, 2, 0, 1, 2)

        self.gridLayout.addWidget(self.frame, 0, 0, 1, 1)

        QMetaObject.connectSlotsByName(Widget)

''' НИКОГДА НЕ ИЗМЕНЯЙТЕ код, сгенерированный Qt Designer, НИКОГДА. 
    # setupUi
    def setTitle(self, text):
# AttributeError: 'Ui_Widget' object has no attribute 'titlelabel_2'
        self.titlelabel_2.setText(text)

    def setDescription(self, text):
        self.descriptionlabel_2.setText(text)

    def setIcon(self, imagePath):
        self.iconlabel_2.setPixmap(QtGui.QPixmap(imagePath).scaled(
            160, 210))
'''

class CustomQWidget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(CustomQWidget, self).__init__(parent)

        self.titleLabel = QtWidgets.QLabel()
        self.titleLabel.setStyleSheet('''color: White; background-color:  #212121; font-size:24px; border-radius: 15px;
        min-height: 50px;
        max-height: 50px;
        min-width: 50px;
        max-width: 500px;
        ''')

        self.descriptionLabel = QtWidgets.QLabel()
        self.descriptionLabel.setWordWrap(True)
        self.descriptionLabel.setStyleSheet(
            'color: White; background-color: #212121; max-height: 150px; border-radius: 15px; ')

        self.vBoxLayout = QtWidgets.QVBoxLayout()
        self.vBoxLayout.addWidget(self.titleLabel, 0)
        self.vBoxLayout.addWidget(self.descriptionLabel, 1)
        self.vBoxLayout.setSpacing(0)

        self.iconQLabel = QtWidgets.QLabel()
        self.iconQLabel.setMaximumSize(160, 210)

        self.hBoxLayout = QtWidgets.QHBoxLayout(self)
        self.hBoxLayout.addWidget(self.iconQLabel, 0)
        self.hBoxLayout.addLayout(self.vBoxLayout, 1)

    def setTitle(self, text):
        self.titleLabel.setText(text)

    def setDescription(self, text):
        self.descriptionLabel.setText(text)

    def setIcon(self, imagePath):
        self.iconQLabel.setPixmap(QtGui.QPixmap(imagePath).scaled(
            160, 210))


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        if not MainWindow.objectName():
            MainWindow.setObjectName(u"MainWindow")
        MainWindow.resize(872, 567)
        MainWindow.setAutoFillBackground(False)
        MainWindow.setStyleSheet(u"background-color: #121212;")
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName(u"centralwidget")
        self.horizontalLayout = QHBoxLayout(self.centralwidget)
        self.horizontalLayout.setObjectName(u"horizontalLayout")
        self.gridLayout = QGridLayout()
        self.gridLayout.setObjectName(u"gridLayout")
        self.lineEdit = QLineEdit(self.centralwidget)
        self.lineEdit.setObjectName(u"lineEdit")
        self.lineEdit.setStyleSheet(u"QLineEdit {\n"
                                    "border: 2px solid #141414;\n"
                                    "border-radius: 10px;\n"
                                    "background-color: #212121;\n"
                                    "color: White\n"

                                    "}")

        self.gridLayout.addWidget(self.lineEdit, 0, 4, 1, 1)

        self.settingsbutton = QPushButton(self.centralwidget)
        self.buttonGroup = QButtonGroup(MainWindow)
        self.buttonGroup.setObjectName(u"buttonGroup")
        self.buttonGroup.addButton(self.settingsbutton)
        self.settingsbutton.setObjectName(u"settingsbutton")
        self.settingsbutton.setStyleSheet(u"color: #bfbfbf;")
        icon = QIcon()
        icon.addFile(u"res/pictures/settings.png", QSize(), QIcon.Normal, QIcon.Off)
        self.settingsbutton.setIcon(icon)

        self.gridLayout.addWidget(self.settingsbutton, 0, 6, 1, 1)

        self.searchbutton = QPushButton(self.centralwidget)
        self.buttonGroup.addButton(self.searchbutton)
        self.searchbutton.setObjectName(u"searchbutton")
        self.searchbutton.setStyleSheet(u"color: #bfbfbf;    ")
        icon1 = QIcon()
        icon1.addFile(u"res/pictures/search.png", QSize(), QIcon.Normal, QIcon.Off)
        self.searchbutton.setIcon(icon1)

        self.gridLayout.addWidget(self.searchbutton, 0, 5, 1, 1)

        self.horizontalLayout_3 = QHBoxLayout()
        self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")

        self.gridLayout.addLayout(self.horizontalLayout_3, 0, 0, 1, 1)

        self.achievementbutton_2 = QPushButton(self.centralwidget)
        self.buttonGroup.addButton(self.achievementbutton_2)
        self.achievementbutton_2.setObjectName(u"achievementbutton_2")
        self.achievementbutton_2.setStyleSheet(u"color: #bfbfbf;\n"
                                               "border: 2px solid #141414;\n"
                                               "border-radius: 2px;")
        icon2 = QIcon()
        icon2.addFile(u"res/pictures/favorite.png", QSize(), QIcon.Normal, QIcon.Off)
        self.achievementbutton_2.setIcon(icon2)

        self.gridLayout.addWidget(self.achievementbutton_2, 0, 1, 1, 1)

        self.folderbutton = QPushButton(self.centralwidget)
        self.buttonGroup.addButton(self.folderbutton)
        self.folderbutton.setObjectName(u"folderbutton")
        self.folderbutton.setStyleSheet(u"color: #bfbfbf;    ")
        icon3 = QIcon()
        icon3.addFile(u"res/pictures/folder.png", QSize(), QIcon.Normal, QIcon.Off)
        self.folderbutton.setIcon(icon3)

        self.gridLayout.addWidget(self.folderbutton, 0, 3, 1, 1)

        self.achievementbutton = QPushButton(self.centralwidget)
        self.buttonGroup.addButton(self.achievementbutton)
        self.achievementbutton.setObjectName(u"achievementbutton")
        self.achievementbutton.setStyleSheet(u"color: #bfbfbf;    ")
        icon4 = QIcon()
        icon4.addFile(u"res/pictures/achievement.png", QSize(), QIcon.Normal, QIcon.Off)
        self.achievementbutton.setIcon(icon4)

        self.gridLayout.addWidget(self.achievementbutton, 0, 2, 1, 1)

        self.listWidget = QListWidget(self.centralwidget)
        self.listWidget.setObjectName(u"listWidget")
        self.listWidget.viewport().setProperty("cursor", QCursor(Qt.ArrowCursor))
        self.listWidget.setToolTipDuration(-5)
        self.listWidget.setAutoFillBackground(False)
        self.listWidget.setStyleSheet(u"#listWidget {\n"
                                      "    border: 2px solid #141414;\n"
                                      "    background-color: #212121;\n"
                                      "    border-radius: 20px;\n"
                                      "}\n"
                                      "#listWidget::item {\n"
                                      "    background-color: #212121;    \n"
                                      "}  \n"
                                      "#listWidget::item:selected {                             /* <---- */ \n"
                                      "    background-color: #0f0f0f;                             /* <---- */  \n"
                                      "}  \n"
                                      "#listWidget::item:hover {                             /* <---- */ \n"
                                      "    background-color: #0f0f0f;                             /* <---- */  \n"
                                      "}")
        self.listWidget.setFrameShape(QFrame.NoFrame)
        self.listWidget.setFrameShadow(QFrame.Plain)
        self.listWidget.setLineWidth(0)
        self.listWidget.setMovement(QListView.Static)
        self.listWidget.setResizeMode(QListView.Fixed)
        self.listWidget.setSortingEnabled(False)

        self.gridLayout.addWidget(self.listWidget, 1, 0, 1, 7)

        self.horizontalLayout.addLayout(self.gridLayout)

        MainWindow.setCentralWidget(self.centralwidget)
        
# !!!   НИКОГДА НЕ ИЗМЕНЯЙТЕ код, сгенерированный Qt Designer, НИКОГДА.
        '''     
        self.pixmap = QPixmap()
        i = 0
        listdata = [
            {
                "title": "Название",
                "description": "Описание",
                "icon": "Ok.png",
            },
        ]
        for list in listdata:
            customQWidget = CustomQWidget()
            customQWidget.setTitle(list["title"])
            customQWidget.setDescription(list["description"])

            customQWidget.setIcon(list["icon"])

            item = QtWidgets.QListWidgetItem(self.listWidget)
            item.setSizeHint(customQWidget.sizeHint())
            self.listWidget.addItem(item)
            item.setData(1, i)

            self.listWidget.setItemWidget(item, customQWidget)
            i += 1
            censored = False
        self.listWidget.itemClicked.connect(self.Clicked)
# !!!        
        '''
        self.retranslateUi(MainWindow)
        QMetaObject.connectSlotsByName(MainWindow)


    # setupUi
    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
        self.settingsbutton.setText("")
        self.searchbutton.setText("")
        self.achievementbutton_2.setText(
            QCoreApplication.translate("MainWindow", u"\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u043e\u0435", None))
        self.folderbutton.setText(
            QCoreApplication.translate("MainWindow", u"\u041a\u0430\u0442\u0430\u043b\u043e\u0433", None))
        self.achievementbutton.setText(
            QCoreApplication.translate("MainWindow", u"\u0414\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f", ))

# !!! НИКОГДА НЕ ИЗМЕНЯЙТЕ код, сгенерированный Qt Designer, НИКОГДА.
    '''
    def Clicked(self):
        self.listWidget.clear()
        customqwidget2 = Ui_Widget()
        customqwidget2.setTitle("Тут название")
        customqwidget2.setDescription("Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum")
        customqwidget2.setIcon("ok.png")
        item = QtWidgets.QListWidgetItem(self.listWidget)
        item.setSizeHint(customqwidget2.sizeHint())
        self.listWidget.addItem(item)

        self.listWidget.setItemWidget(item, customqwidget2)
    '''


# Создайте другой класс, который наследуется от соответствующего виджета, 
# и используйте созданный класс для его заполнения.
class CustomqWidget2(QtWidgets.QWidget, Ui_Widget):
    def __init__(self, parent=None):
        super(CustomqWidget2, self).__init__(parent)
        self.setupUi(self)

    def setTitle(self, text):
        self.titlelabel_2.setText(text)

    def setDescription(self, text):
        self.descriptionlabel_2.setText(text)

    def setIcon(self, imagePath):
        self.iconlabel_2.setPixmap(QtGui.QPixmap(imagePath).scaled(
            160, 210))


class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
#        self.ui = Ui_MainWindow()
#        self.ui.setupUi(self)
        self.setupUi(self)
        
# !!!        
        self.pixmap = QPixmap()
        i = 0
        listdata = [
            {
                "title": "Название",
                "description": "Описание",
                "icon": "Ok.png",
            },
        ]
        for list in listdata:
            customQWidget = CustomQWidget()
            customQWidget.setTitle(list["title"])
            customQWidget.setDescription(list["description"])

            customQWidget.setIcon(list["icon"])

            item = QtWidgets.QListWidgetItem(self.listWidget)
            item.setSizeHint(customQWidget.sizeHint())
            self.listWidget.addItem(item)
            item.setData(1, i)

            self.listWidget.setItemWidget(item, customQWidget)
            i += 1
            censored = False
        self.listWidget.itemClicked.connect(self.item_clicked)
        
# !!!         
    def item_clicked(self):
        self.listWidget.clear()
        
#        customqwidget2 = Ui_Widget()
        customqwidget2 = CustomqWidget2()                             # !!!
        customqwidget2.setTitle("Тут название")
        customqwidget2.setDescription("""Lorem Ipsum is simply dummy text of the \
printing and typesetting industry. Lorem Ipsum has been the industry's standard \
dummy text ever since the 1500s, when an unknown printer took a galley of type and \
scrambled it to make a type specimen book. It has survived not only five centuries, \
but also the leap into electronic typesetting, remaining essentially unchanged. \
It was popularised in the 1960s with the release of Letraset sheets containing \
Lorem Ipsum passages, and more recently with desktop publishing software like \
Aldus PageMaker including versions of Lorem Ipsum""")
        customqwidget2.setIcon("im.png")

        item = QtWidgets.QListWidgetItem(self.listWidget)
        item.setSizeHint(customqwidget2.sizeHint())
        self.listWidget.addItem(item)

        self.listWidget.setItemWidget(item, customqwidget2) 


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())

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

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

→ Ссылка