PyQt的布局管理(二)

在使用GRidLayout布局时,其添加组件的有三种方法,方法如下:

 QGridLayout.addWidget(QWidget)
 QGridLayout.addWidget(QWidget, int, int, Qt.Alignment alignment=0)
 QGridLayout.addWidget(QWidget, int, int, int, int, Qt.Alignment alignment=0)

其中四个int类型的参数从左至右分别表示:row(起始行),column(起始列),rowSpan(行跨度),columnSpan(列跨度)

第一个参数为控件名,最后一个参数为对齐方式

下面是组件跨多行多列以及利用QHBoxLayout和QVBoxLayout进行多个布局的的实验

#!/usr/bin/env python
#coding: utf-8


import sys 
from PyQt4 import QtGui

class Space(QtGui.QWidget):
    def __init__(self):
        super(Space, self).__init__()
        self.initUI()
    
    def initUI(self):
        #添加两个按钮,并将他们作为同一个布局
        ok = QtGui.QPushButton('OK',self)
        cancel = QtGui.QPushButton('Cancel',self)    

        button_layout = QtGui.QHBoxLayout()
        button_layout.addWidget(ok)
        button_layout.addWidget(cancel)

        title = QtGui.QLabel('Title')
        author = QtGui.QLabel('Author')
        review = QtGui.QLabel('Review')
        #test = QtGui.QLabel('Test')
    
        titleEdit = QtGui.QLineEdit()
        authorEdit = QtGui.QLineEdit()
        reviewEdit = QtGui.QTextEdit()
    
        grid = QtGui.QGridLayout()
        grid.setSpacing(50)         #像素.应为两个组件之间的距离
    
        grid.addWidget(title,0,0)   #其中注释的两条语句,是为了验证一个想法:行数从0开始,列数从0开始。开始的代码行数为1,让我纠结了好久
        grid.addWidget(titleEdit,0,1)
        #grid.addWidget(test,1,2)
    
        grid.addWidget(author, 1, 0)
        grid.addWidget(authorEdit, 1, 1)
    
        grid.addWidget(review, 2, 0)
        grid.addWidget(reviewEdit, 2, 1, 5, 1)

        #布局中添加子布局,一个是button布局,还有一个是grid布局         
        layout = QtGui.QVBoxLayout()
        layout.addLayout(button_layout)
        layout.addLayout(grid)

        self.setLayout(layout)
        self.setWindowTitle('grid layout')
        self.resize(350, 300)

def main():
    app = QtGui.QApplication(sys.argv)
    ex = Space()
    ex.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()
                                                                                                                                                        



运行结果:

PyQt的布局管理(二)_第1张图片


你可能感兴趣的:(PyQt,布局管理)