PyQt5 表单布局+垂直布局+水平布局综合使用

本实例环境为PyQt5+Python3.5+ubuntu16

PyQt5布局有垂直布局(控件从上到下排列),水平布局(控件从左到右排列),表单布局( 将两个空间对应一起布局)等布局,本实例通过创建QFormLayout布局将QLabel(标签)和QLineEdit(行编辑器)一一对应起来,label1对应lineEdit1水平排列起来,即label1和lineEdit1是一个整体,然后再将QFormLayout作为一个整体布局嵌入到水平布局和垂直布局中,本实例中用一个水平布局hbox将gridlayout1和gridlayout2设置为水平布局,所以labe1 lineEdit1,label2,lineEdit2就会呈现处水平布局,然后用一个垂直布局vbox将gridlayout3和gridlayout4设置为垂直布局,所以label3 lineEdit3和label4 lineEdit4呈现出垂直布局,最后用一个垂直布局vlayout将hbox水平布局和vbox垂直布局(此时vbox作为一个整体,hbox作为一个整体)设置成垂直布局并且显示这个vlayout布局

总结: PyQt5布局类似于一个沙箱式的布局,把每一个布局当成一个箱子,箱子里面可以装控件也可以装箱子,箱子里的箱子又可以装箱子和控件,一直无限循环下去,通过这种方式我们可以组合处各种各样的布局

from PyQt5.QtWidgets import QApplication, QLineEdit, QLabel, QFormLayout, QHBoxLayout, QVBoxLayout
from PyQt5 import QtWidgets


class FormLayout(QtWidgets.QWidget):
    def __init__(self):
        QtWidgets.QWidget.__init__(self)
        self.setWindowTitle('表单+水平+垂直布局综合演示')
        #添加标签
        label1 = QLabel('label1')
        label2 = QLabel('label2')
        label3 = QLabel('label3')
        label4 = QLabel('label4')
        #添加行编辑器
        lineEdit1 = QLineEdit()
        lineEdit2 = QLineEdit()
        lineEdit3 = QLineEdit()
        lineEdit4 = QLineEdit()
        #添加表单布局
        gridlayout1 = QFormLayout()
        gridlayout2 = QFormLayout()
        gridlayout3 = QFormLayout()
        gridlayout4 = QFormLayout()
        gridlayout1.addRow(label1, lineEdit1)
        gridlayout2.addRow(label2, lineEdit2)
        gridlayout3.addRow(label3, lineEdit3)
        gridlayout4.addRow(label4, lineEdit4)
        #添加水平布局
        hbox = QHBoxLayout()
        hbox.addLayout(gridlayout1)
        hbox.addLayout(gridlayout2)
        #添加垂直布局
        vbox = QVBoxLayout()
        vbox.addLayout(gridlayout3)
        vbox.addLayout(gridlayout4)
        #添加布局
        vlayout = QVBoxLayout() #整个程序的灵魂,将QVBoxLayout改成QHBoxLayout可以改变hbox和vbox的布局从垂直布局到水平布局
        vlayout.addLayout(hbox)
        vlayout.addLayout(vbox)
        self.setLayout(vlayout)

if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    qb = FormLayout()
    qb.show()
    sys.exit(app.exec_())

效果:

PyQt5 表单布局+垂直布局+水平布局综合使用_第1张图片

 

你可能感兴趣的:(PyQt5,PyQt5布局)