Визальное оформление интерфейса.

AndreyNekto

Новичок
Пользователь
Май 20, 2020
1
0
1
Всем привет! Python 3.8, PyQT5, Windows. Я создаю в цикле ряд карточек товаров. Каждая карточка это блок строк QVBoxLayout в том числе картинка, артикул, краткое описание, цена, кнопка, потом каждый блок помещается в ячейку QGridLayout. Помогите пожалуйста оформить визально. Надо сделать что бы размер картинки был строго определенный, например 150 на 150 пикселов, Размер карточек, покрайней мере в рамках одной строки был одинаковый, из-за разного размера текстовой части описания плавает размер картинки и очень бы хотелось каждый блок визально отделить от другого, например обвести рамкой, если возможно со скругленными краями и в идеале небольшой тенью. Принтскрин как это сейчас и код ниже. Заранее всем спасибо.

Untitled.png
Python:
class PriceContainer(QWidget, QtGui.QImage, QtCore.QSize):
    def __init__(self, text):
        super(PriceContainer, self).__init__()
        global price_light_g
        self.grid_price = QtWidgets.QGridLayout()
        self.setLayout(self.grid_price)

        self.row_count = 0
        self.cell_count = 0
        for key in sorted(price_light_g.keys()):
            self.vbox_price = QtWidgets.QVBoxLayout()
            self.vbox_price.setSpacing(0)
            self.vbox_price.setContentsMargins(0, 0, 0, 0)
            self.str_1 = "import\images\\"
            self.str_2 = price_light_g[key][5]
            self.model_image_path = self.str_1 + self.str_2         
            self.image_model = QtWidgets.QLabel(self)
            if os.path.exists(self.model_image_path):
                self.pixmap = QtGui.QPixmap(self.model_image_path)
            else:
                self.file_url_str = "https://www.site.ru/light_designer/directory/images/" + self.str_2   
                self.file_local_str = "import\images" + "\\" + self.str_2 
                self.g = requests.get(self.file_url_str)       
                if self.g.status_code == 200:                 
                    f = open(self.file_local_str,'wb')         
                    f.write(self.g.content)                   
                    f.close()                                   
                    self.pixmap = QtGui.QPixmap(self.model_image_path)
                else:                                           
                    self.pixmap = QtGui.QPixmap(r"import\images\nofoto.png")
            self.image_model.setPixmap(self.pixmap)
            self.artikul_model = QtWidgets.QLabel("Артикул: " + key)
            self.desc_model = QtWidgets.QLabel(price_light_g[key][3])
            self.desc_model.setWordWrap(True)
            self.opt_model = QtWidgets.QLabel("Цена ОПТ: " + price_light_g[key][0])
            self.rrc_model = QtWidgets.QLabel("Цена РРЦ: " + price_light_g[key][1])
            self.zakaz_button = QtWidgets.QPushButton("Добавить в заказ")
            self.button_name = "zakaz_button_" + key
            self.zakaz_button.setObjectName(self.button_name)
            self.vbox_price.addWidget(self.image_model)
            self.vbox_price.addWidget(self.artikul_model)
            self.vbox_price.addWidget(self.desc_model)
            self.vbox_price.addWidget(self.opt_model)
            self.vbox_price.addWidget(self.rrc_model)
            self.vbox_price.addWidget(self.zakaz_button)
            self.zakaz_button.clicked.connect(partial(self.zakaz_dialog_add, key, self.button_name))
            self.grid_price.addLayout(self.vbox_price, self.row_count, self.cell_count)
            if self.cell_count == 0:
                self.cell_count = self.cell_count + 1
            else:
                self.cell_count = self.cell_count - 1
                self.row_count = self.row_count + 1
 

Форум IT Специалистов