Как переместить виджеты в верхний левый угол вместо правого нижнего

Просто начал возиться с pyqt5 и задавался вопросом, как подтолкнуть виджеты вверх для QVBoxLayout и оставить для QHBoxLayout. В настоящее время с addStretch() он перемещает виджеты вниз / вправо. Я хотел бы избежать использования абсолютного позиционирования.

self.tabColor.layout = QVBoxLayout(self)
self.tabColor.layout.addStretch()    

## FOR CONTROL
lbl_control = QLabel(self)
lbl_control.setText("control")
le_control = QLineEdit(self)

hbox_control = QHBoxLayout()
hbox_control.addStretch(1)
hbox_control.addWidget(lbl_control)
hbox_control.addWidget(le_control)

## FOR UNKNOWN
lbl_unknown = QLabel(self)
lbl_unknown.setText("unknown")
le_unknown = QLineEdit(self)

hbox_unknown = QHBoxLayout()
hbox_unknown.addStretch(1)
hbox_unknown.addWidget(lbl_unknown)
hbox_unknown.addWidget(le_unknown)


self.tabColor.layout.addLayout(hbox_control)
self.tabColor.layout.addLayout(hbox_unknown)
self.tabColor.setLayout(self.tabColor.layout)

я использовал self.tabColor.layout.setDirection(3), Он размещает горизонтальный макет сверху, но, похоже, переворачивает порядок. Сначала "неизвестно", потом "контрол". Это не имеет большого значения, но мне было интересно, есть ли другие варианты, которые я мог бы попробовать

2 ответа

Первым подходом, который я бы порекомендовал вам, было бы также установить направление вашего макета, поскольку вы пытаетесь выбрать другой путь:

  1. Попробуйте добавить всегда в начале, вместо добавления виджета, пытаясь вставить его

вместо:

self.layout.addWidget(self.lbl_1)
self.layout.addWidget(self.lbl_2)
self.layout.addWidget(self.lbl_3)

пытаться:

self.layout.insertWidget(0,self.lbl_1)
self.layout.insertWidget(0,self.lbl_2)
self.layout.insertWidget(0,self.lbl_3)

и он будет добавлен в обратном направлении, виджеты, которые уже находятся внутри вашего макета, будут смещены в соответствии с вашим макетом QHBoxLayout или QVBoxLayout.

Изменить порядок вызовов addWidget/Stretch (т.е. добавить растяжку после виджета)

Другие вопросы по тегам