如何将小部件推到左上方而不是右下方

时间:2017-05-24 19:32:19

标签: python pyqt boxlayout qvboxlayout

刚刚开始搞乱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;这不是什么大问题,但想知道是否还有其他选择我可以尝试

2 个答案:

答案 0 :(得分:0)

更改addWidget / Stretch调用的顺序(即在小部件后添加

答案 1 :(得分:0)

我建议您采用的第一种方法是设置布局的方向,因为您正试图采用另一种方式:

  1. 尝试在开头添加,而不是添加小部件尝试插入
  2. 而不是:

    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进行移位。