刚刚开始搞乱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)
。它将水平布局放在顶部,但似乎可以翻转顺序。基本上'未知'首先是“conrol”#39;这不是什么大问题,但想知道是否还有其他选择我可以尝试
答案 0 :(得分:0)
更改addWidget / Stretch调用的顺序(即在小部件后添加
)答案 1 :(得分:0)
我建议您采用的第一种方法是设置布局的方向,因为您正试图采用另一种方式:
而不是:
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进行移位。