import sys from PyQt6.QtGui import QPixmap from PyQt6.QtWidgets import ( QApplication, QMainWindow, QWidget, QLabel, QHBoxLayout, QVBoxLayout ) from PyQt6.QtCore import Qt class TaskOne(QMainWindow): def __init__(self, path_to_image: str): super().__init__() self.original_pixmap = QPixmap(path_to_image) self._init_ui() self.setFixedSize(900, 250) def _init_ui(self): root = QWidget(self) main_layout = QHBoxLayout(root) # Отступы как на макете main_layout.setSpacing(15) main_layout.setContentsMargins(15, 15, 15, 15) # ---------- Фото ---------- self.image_label = QLabel() self.image_label.setAlignment(Qt.AlignmentFlag.AlignCenter) self.image_label.setMinimumSize(180, 180) self.image_label.setStyleSheet("border: 1px solid black;") # ---------- Текстовая информация ---------- info_layout = QVBoxLayout() info_layout.setSpacing(5) title = QLabel("Категория товара | Наименование товара") title.setStyleSheet("font-weight: bold;") info_layout.addWidget(title) info_layout.addWidget(QLabel("Описание товара:")) info_layout.addWidget(QLabel("Производитель:")) info_layout.addWidget(QLabel("Поставщик:")) info_layout.addWidget(QLabel("Цена:")) info_layout.addWidget(QLabel("Единица измерения:")) info_layout.addWidget(QLabel("Количество на складе:")) info_layout.addStretch() # ---------- Скидка ---------- discount_label = QLabel("Действующая\nскидка") discount_label.setAlignment(Qt.AlignmentFlag.AlignCenter) discount_label.setFixedWidth(120) discount_label.setStyleSheet(""" QLabel { border: 1px solid black; font-weight: bold; } """) # ---------- Добавление в основной layout ---------- main_layout.addWidget(self.image_label, stretch=0) main_layout.addLayout(info_layout, stretch=1) main_layout.addWidget(discount_label, stretch=0) self.setCentralWidget(root) self._update_pixmap() def resizeEvent(self, event): self._update_pixmap() super().resizeEvent(event) def _update_pixmap(self): if self.original_pixmap.isNull(): return scaled = self.original_pixmap.scaled( self.image_label.size(), Qt.AspectRatioMode.KeepAspectRatio, Qt.TransformationMode.SmoothTransformation ) self.image_label.setPixmap(scaled) if __name__ == "__main__": app = QApplication(sys.argv) window = TaskOne("apple.webp") window.show() sys.exit(app.exec())