不懂PyQt5垂直布局?只需3分钟即可学会

PyQt5中实现垂直布局,主要使用QVBoxLayout类。该布局管理器将子控件垂直排列,并可以根据需要自动调整大小。使用QVBoxLayout可以方便地构建从上到下排列的界面元素。

import sys
from PyQt5.QtWidgets import QApplication, QVBoxLayout, QWidget, QPushButton


class myWindow(QWidget):  # 相当于self == w=QWidget()
    def __init__(self):
        super().__init__()
        self.resize(400, 200)

        self.setWindowTitle('垂直布局')
        # 创建一个垂直布局
        layout = QVBoxLayout()

        # 第一个伸缩空间,伸缩因子为1
        layout.addStretch(1)

        # 添加第一个按钮
        btn1 = QPushButton("按钮1")
        layout.addWidget(btn1)

        # 第二个伸缩空间,伸缩因子为1
        layout.addStretch(1)

        # 添加第二个按钮
        btn2 = QPushButton("按钮2")
        layout.addWidget(btn2)

        # 第三个伸缩空间,伸缩因子为1
        layout.addStretch(1)

        # 添加第三个按钮
        btn3 = QPushButton("按钮3")
        layout.addWidget(btn3)

        # 第四个伸缩空间,伸缩因子为2
        layout.addStretch(2)

        # 添加第四个按钮
        btn4 = QPushButton("按钮4")
        layout.addWidget(btn4)

        # 第五个伸缩空间,伸缩因子为2
        layout.addStretch(2)

        # 将布局设置给当前QWidget(假设这段代码在QWidget的子类中)
        self.setLayout(layout)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = myWindow()
    window.show()
    app.exec()
    pass

伸缩因子的作用

  • 伸缩因子(stretch factor)决定了当布局有多余空间时,各个伸缩空间应该如何分配这些空间。在您的代码中,addStretch方法的参数(即伸缩因子)被设置为1或2。
  • 当窗口大小改变时,布局管理器会根据伸缩因子的比例来分配额外的空间。例如,如果您在btn3btn4之间的伸缩空间(伸缩因子为2)和在其他地方的伸缩空间(伸缩因子为1)之间有多余空间,那么btn3btn4之间的空间将是其他伸缩空间的两倍大。
  • 但是,需要注意的是,如果窗口的大小刚好足够容纳所有小部件而不留有多余空间,那么伸缩空间实际上就不会有任何效果,因为没有空间可以分配

 ​​​​​​​

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值