Как вертикально центрировать виджеты внутри ячейки таблицы в pyqt? - PullRequest
0 голосов
/ 07 августа 2020

Я добавил несколько виджетов в QFormLayout, затем добавил этот макет в ячейку в таблице, но кажется, что виджеты выровнены по верхнему краю, и я хочу, чтобы они были центрированы по вертикали, чтобы они были в центре, вот изображение для объяснения: введите описание изображения здесь

класс создания макета и его виджетов:

class Options(QtWidgets.QWidget):
    def __init__(self, parent=None,row=[], ops=[]):
        super(Options, self).__init__(parent)
        self.i = random.randint(1, 100)
        self.row = [j.decode("utf-8") if i!=1 else "image" for i,j in enumerate(row)]
        self.layout = QFormLayout()
        ops = ast.literal_eval(ops[0]) if len(ops[0])>1 else {}
        for i,j in ops.items():
            #adding widgets here and it is not related!

        self.btn = QtWidgets.QPushButton("Submit")
        self.btn.clicked.connect(self.do)
        self.layout.addWidget(self.btn)
        
        self.setLayout(self.layout)

1 Ответ

0 голосов
/ 07 августа 2020

Установить вертикальное выравнивание QFormLayout:

self.layout.setFormAlignment(QtCore.Qt.AlignVCenter)

Обычно лучше избегать перезаписи существующих атрибутов экземпляра: self.layout() - функция по умолчанию для всех потомков QWidget ; вы либо используете локальную переменную, либо другое имя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...