码迷,mamicode.com
首页 > 其他好文 > 详细

PyQt4网格布局

时间:2016-03-28 13:25:04      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

最通用的布局类别是网格布局(QGridLayout)。该布局方式将窗口空间划分为许多行和列。要创建该布局方式,我们需要使用QGridLayout类。

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

import sys
from PyQt4 import QtGui

class GridLayout(QtGui.QWidget):
    def __init__(self, parent = None):
        QtGui.QWidget.__init__(self)
        self.setWindowTitle(grid layout)
        names = [Cls, Bck, ‘‘, Close, 7, 8, 9, /,
                 4, 5, 6, *, 1, 2, 3,
                 -, 0, ., =, +]
        grid= QtGui.QGridLayout()
        pos = [(x, y) for x in range(5) for y in range(4)]
        for i in range(len(pos)):
            button = QtGui.QPushButton(names[i])
            if i == 2:
                grid.addWidget(QtGui.QLabel(‘‘), 0, 2)
            else:
                grid.addWidget(button, pos[i][0], pos[i][1])
        self.setLayout(grid)
        
app = QtGui.QApplication(sys.argv)
box = GridLayout()
box.show()
sys.exit(app.exec_())

效果:

技术分享

在这个示例中,我们创建了一组按网格布局的按钮。为了填补bck和Close按钮之间的空白,我们使用QLabel部件。

grid= QtGui.QGridLayout()

该语句创建了一个网格布局。

            if i == 2:
                grid.addWidget(QtGui.QLabel(‘‘), 0, 2)
            else:
                grid.addWidget(button, pos[i][0], pos[i][1])

使用addWidget()方法,我们将部件加入到网格布局中。addWidget()方法的参数依次为要加入到局部的部件,行号和列号。


 

部件在网格布局中可以跨与多行或多列。我们将在下面的示例中演示该情况。

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

import sys
from PyQt4 import QtGui

class GridLayout(QtGui.QWidget):
    def __init__(self, parent = None):
        QtGui.QWidget.__init__(self)
        self.setWindowTitle(grid layout)
        
        title = QtGui.QLabel(Title)
        author = QtGui.QLabel(Author)
        review = QtGui.QLabel(Review)
        
        titleEdit = QtGui.QLineEdit()
        authorEdit = QtGui.QLineEdit()
        reviewEdit = QtGui.QLineEdit()
        
        grid = QtGui.QGridLayout()
        grid.setSpacing(10)
        
        grid.addWidget(title, 1, 0)
        grid.addWidget(titleEdit, 1, 1)
        
        grid.addWidget(author, 2, 0)
        grid.addWidget(authorEdit, 2, 1)
        
        grid.addWidget(review, 3, 0)
        grid.addWidget(reviewEdit, 3, 1, 5, 1)
        
        self.setLayout(grid)
        self.resize(350, 300)
        
app = QtGui.QApplication(sys.argv)
box = GridLayout()
box.show()
sys.exit(app.exec_())

效果:

技术分享

        grid = QtGui.QGridLayout()
        grid.setSpacing(10)

通过以上两句,我们创建了一个布局管理器,并将该布局管理器中的部件间隔(同行的横向间隔)设为10个字距。

        grid.addWidget(reviewEdit, 3, 1, 5, 1)

我们可以为加入网格布局的部件设置行列跨度,在上面的语句中,我们将reviewEdit部件的行跨度设为5,列跨度设为1。

PyQt4网格布局

标签:

原文地址:http://www.cnblogs.com/moonlightpoet/p/5328573.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!