【问题标题】:How to push widgets to top left instead of bottom right如何将小部件推到左上角而不是右下角
【发布时间】:2017-10-25 07:25:32
【问题描述】:

刚开始弄乱 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)。它将水平布局放在顶部,但似乎颠倒了顺序。基本上“未知”将首先是“控制”。这没什么大不了的,但想知道是否有其他选择我可以尝试

【问题讨论】:

    标签: python pyqt boxlayout qvboxlayout


    【解决方案1】:

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

    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 移动。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2019-01-16
        • 1970-01-01
        • 2021-08-21
        • 2013-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-29
        • 2019-03-06
        相关资源
        最近更新 更多