Загрузка данных


import sys
from PyQt6 import QtCore, QtGui, QtWidgets
from PyQt6.QtCore import Qt
from PyQt6.QtWidgets import *

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(800, 170)
        self.setWindowTitle("Список товаров")
        icon = QtGui.QIcon("resources/icons/ico4.png")
        self.setWindowIcon(icon)

        # В учебнике пример с Pixmap в 19.11. Окна произвольной формы
        lbl_pixmap = QLabel()
        lbl_pixmap.setFrameStyle(QFrame.Shape.Box)
        lbl_pixmap.setPixmap(QtGui.QPixmap("resources/icons/ico1.png").scaled(60, 60))

        lbl_description_tovar = QLabel("Товар 1")
        lbl_description_tovar.setFrameStyle(QFrame.Shape.Box)
        lbl_description_tovar.setWordWrap(True)

        # В учебнике 20.9. События мыши.
        # lbl1.mousePressEvent = lambda event: self.show_window() # если не нужно передавать ничего кроме события мыши

        # если нужно передавать параметры, можно несколько
        lbl_description_tovar.mousePressEvent = lambda event, pix_img=lbl_pixmap.pixmap(): self.show_next_window(pix_img)

        lbl_discount = QLabel("10%")
        lbl_discount.setFrameStyle(QFrame.Shape.Box)

        frame = QFrame()
        frame.setFrameStyle(QFrame.Shape.Box)

        layout_for_labels = QHBoxLayout(frame)
        layout_for_labels.addWidget(lbl_pixmap)
        layout_for_labels.addWidget(lbl_description_tovar, stretch=5)
        layout_for_labels.addWidget(lbl_discount)

        layout_for_frame = QVBoxLayout()
        layout_for_frame.addWidget(frame)

        # В учебнике 21.12. Прокручиваемая панель
        scrollarea = QScrollArea()
        scrollarea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarPolicy.ScrollBarAlwaysOn)
        scrollarea.setLayout(layout_for_frame)

        main_layout = QVBoxLayout()
        main_layout.addWidget(scrollarea)
        self.setLayout(main_layout)

    # def show_window(self, event):
    def show_next_window(self, value):
        self.next_win = NextWin(value)
        self.next_win.show()

class NextWin(QWidget):
    def __init__(self, pix_img):
        super().__init__()
        self.resize(200, 150)
        self.setWindowTitle("Просмотр деталей")
        icon = QtGui.QIcon("resources/icons/ico4.png")
        self.setWindowIcon(icon)
        pix = pix_img
        lbl_pix = QLabel(self)
        lbl_pix.setPixmap(QtGui.QPixmap(pix))

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