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



刚刚开始搞砸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"。 这没什么大不了的,但想知道我是否可以尝试其他选择

我建议您的第一种方法也是设置布局的方向,因为您正在尝试另一种方法:

  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 调用的顺序(即在 widget 之后添加 stretch(

相关内容

  • 没有找到相关文章

最新更新