PyQt5布局管理之QHBoxLayout(一)

QHBoxLayout

前言

采用QBOXLayout类可以在水平和垂直方向上排列控件,QHBoxLayout和QVBoxLayout类继承自QBoxLayout
采用QHBoxLayout类,按照从左到右的顺序来添加控件

QHBoxLayout类中常用的方法如下

方法描述
addLayout(self,stretch=0)在窗口的右边添加布局,使用stretch(伸缩量)进行伸缩,伸缩量默认为0
addWidget(self,QWidget.stretch,Qt.Alignmeny alihnment)在布局中添加控件
stretch(伸缩量),只适用于QBoxLayout,控件和窗口会随着伸缩量的变大而增大
alignment:指定的对齐方式
addSpacing(self,int)设置各控件的上下间距,通过该方法可以增加额外的控件

对齐方式参数

参数描述
Qt.AlignLeft水平方向居左对齐
Qt.AlignRight水平方向具有对齐
Qt.AlignCenter水平方向居中对齐
Qt.AlignJustify水平方向两端对齐
Qt.AlignTop垂直方向靠上对齐
Qt.AlignBottom垂直方向靠下对齐
Qt.AlignVCenter垂直方向居中对齐

实例:水平布局管理的例子



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

class Winform(QWidget):
    def __init__(self,parent=None):
        super(Winform,self).__init__(parent)
        self.setWindowTitle("水平布局管理例子") 

        # 水平布局按照从左到右的顺序进行添加按钮部件。
        hlayout = QHBoxLayout()       
        hlayout.addWidget( QPushButton(str(1)))
        hlayout.addWidget( QPushButton(str(2)))
        hlayout.addWidget( QPushButton(str(3)))
        hlayout.addWidget( QPushButton(str(4)))        
        hlayout.addWidget( QPushButton(str(5)))        

        # todo 优化1 设置控件间距
        #hlayout.setSpacing(20)
        self.setLayout(hlayout)   

if __name__ == "__main__":  
        app = QApplication(sys.argv) 
        form = Winform()
        form.show()
        sys.exit(app.exec_())

运行效果图
这里写图片描述

优化一:设置各控件之间的间距
hlayout.setSpacing(20)

这里写图片描述

实例二:水平布局对齐方式的使用

在某些情况下,需要将布局中的某些控件居中,俱下显示,那么可以通过对齐方式参数Qt.Alignment来设置,示范如下



import sys
from PyQt5.QtWidgets import QApplication  ,QWidget ,QHBoxLayout , QPushButton
from PyQt5.QtCore import Qt 

class Winform(QWidget):
    def __init__(self,parent=None):
        super(Winform,self).__init__(parent)
        self.setWindowTitle("水平布局管理例子") 
        self.resize(800, 200)

        # 水平布局按照从左到右的顺序进行添加按钮部件。
        hlayout = QHBoxLayout()  

        #水平居左 垂直居上      
        hlayout.addWidget( QPushButton(str(1)) , 0 , Qt.AlignLeft | Qt.AlignTop)
        hlayout.addWidget( QPushButton(str(2)) , 0 , Qt.AlignLeft | Qt.AlignTop)
        hlayout.addWidget( QPushButton(str(3)))
        #水平居左 垂直居下
        hlayout.addWidget( QPushButton(str(4)) , 0 , Qt.AlignLeft | Qt.AlignBottom )        
        hlayout.addWidget( QPushButton(str(5)), 0 , Qt.AlignLeft | Qt.AlignBottom)    



        self.setLayout(hlayout)   

if __name__ == "__main__":  
    app = QApplication(sys.argv) 
    form = Winform()
    form.show()
    sys.exit(app.exec_())

运行效果图如下
这里写图片描述

PyQt5提供了多种布局管理器,以便更轻松地创建GUI应用程序。以下是几个常用的布局管理器: 1. QVBoxLayout(垂直布局) 将控件在垂直方向上排列。 ```python from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton app = QApplication([]) window = QWidget() layout = QVBoxLayout() layout.addWidget(QPushButton('Button 1')) layout.addWidget(QPushButton('Button 2')) layout.addWidget(QPushButton('Button 3')) window.setLayout(layout) window.show() app.exec_() ``` 2. QHBoxLayout(水平布局) 将控件在水平方向上排列。 ```python from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QPushButton app = QApplication([]) window = QWidget() layout = QHBoxLayout() layout.addWidget(QPushButton('Button 1')) layout.addWidget(QPushButton('Button 2')) layout.addWidget(QPushButton('Button 3')) window.setLayout(layout) window.show() app.exec_() ``` 3. QGridLayout(网格布局) 将控件排列在网格中。 ```python from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QPushButton app = QApplication([]) window = QWidget() layout = QGridLayout() layout.addWidget(QPushButton('Button 1'), 0, 0) layout.addWidget(QPushButton('Button 2'), 0, 1) layout.addWidget(QPushButton('Button 3'), 1, 0) layout.addWidget(QPushButton('Button 4'), 1, 1) window.setLayout(layout) window.show() app.exec_() ``` 4. QFormLayout(表单布局) 将标签和输入控件排列在一起,以形成表单。 ```python from PyQt5.QtWidgets import QApplication, QWidget, QFormLayout, QLineEdit, QLabel app = QApplication([]) window = QWidget() layout = QFormLayout() layout.addRow(QLabel('Name:'), QLineEdit()) layout.addRow(QLabel('Age:'), QLineEdit()) layout.addRow(QLabel('Email:'), QLineEdit()) window.setLayout(layout) window.show() app.exec_() ``` 以上是一些常用的布局管理器,你也可以自己实现并自定义布局管理器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jia666666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值