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()



运行结果:


转载于:https://my.oschina.net/yanxiaoshuai/blog/529667

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值