PyQt4网格布局

Posted 月光诗人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PyQt4网格布局相关的知识,希望对你有一定的参考价值。

最通用的布局类别是网格布局(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网格布局的主要内容,如果未能解决你的问题,请参考以下文章

片段中的网格视图

如何在kotlin的片段内显示网格视图?

Python - 使用网格布局格式化窗口

Kotlin 中的网格布局?

PyQt4 Box布局

Android Studio XML 布局文件存在但我找不到