Как увеличить расстояние между итемами в QComboBox?

from PyQt5.QtWidgets import (QApplication, QFrame, QVBoxLayout, QLabel, QComboBox, QWidget)

import sys


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

        self.label_meal = QLabel('Выберите прием пищи')
        self.label_meal.setStyleSheet('''QLabel {
                                font-size: 15px;
        }''')

        self.line_meal = QFrame()
        self.line_meal.setFrameShape(QFrame.HLine)

        self.box_meal_time = QComboBox()
        self.box_meal_time.addItems(['Завтрак', 'Второй завтрак', 'Обед', 'Второй обед', 'Ужин',
                                     'Второй ужин', 'Перекус'])
        self.box_meal_time.setObjectName('box_meal_time')
        self.box_meal_time.setStyleSheet('''#box_meal_time {
                            font: 17px;
        }
        #box_meal_time QAbstractItemView::item {
            padding-bottom: 30px;
        }
        ''')

        self.hbox_meal = QVBoxLayout()
        self.hbox_meal.addWidget(self.box_meal_time)

        self.main_box_meal_time = QVBoxLayout()
        self.main_box_meal_time.addWidget(self.label_meal)
        self.main_box_meal_time.addWidget(self.line_meal)
        self.main_box_meal_time.addLayout(self.hbox_meal)
        self.main_box_meal_time.addStretch(1)

        self.setLayout(self.main_box_meal_time)


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

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

Автор решения: gil9red

Магия не работает для элементов, пока не добавить QStyledItemDelegate:

self.box_meal_time.view().setItemDelegate(QStyledItemDelegate(self))

Кст, QAbstractItemView::item можно сократить до ::item

Весь код:

from PyQt5.QtWidgets import QApplication, QFrame, QVBoxLayout, QLabel, QComboBox, QWidget, QStyledItemDelegate

import sys


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

        self.label_meal = QLabel('Выберите прием пищи')
        self.label_meal.setStyleSheet('''
            QLabel {
                font-size: 15px;
            }
        ''')

        self.line_meal = QFrame()
        self.line_meal.setFrameShape(QFrame.HLine)

        self.box_meal_time = QComboBox()
        self.box_meal_time.addItems([
            'Завтрак', 'Второй завтрак', 'Обед', 'Второй обед', 'Ужин',
            'Второй ужин', 'Перекус'
        ])
        self.box_meal_time.setObjectName('box_meal_time')
        self.box_meal_time.view().setItemDelegate(QStyledItemDelegate(self))
        self.box_meal_time.setStyleSheet('''
            #box_meal_time {
                font: 17px;
            }
        
            #box_meal_time ::item {
                padding-bottom: 30px;
                color: red;
            }
        ''')

        self.hbox_meal = QVBoxLayout()
        self.hbox_meal.addWidget(self.box_meal_time)

        self.main_box_meal_time = QVBoxLayout()
        self.main_box_meal_time.addWidget(self.label_meal)
        self.main_box_meal_time.addWidget(self.line_meal)
        self.main_box_meal_time.addLayout(self.hbox_meal)
        self.main_box_meal_time.addStretch(1)

        self.setLayout(self.main_box_meal_time)


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

Скриншот:

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

→ Ссылка