博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PyQt4网格布局
阅读量:4585 次
发布时间:2019-06-09

本文共 2403 字,大约阅读时间需要 8 分钟。

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

#!/usr/bin/python# -*- coding:utf-8 -*-import sysfrom PyQt4 import QtGuiclass 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 sysfrom PyQt4 import QtGuiclass 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。

转载于:https://www.cnblogs.com/moonlightpoet/p/5328573.html

你可能感兴趣的文章
读书印记 - 《大学潜规则:谁能优先进入美国顶尖大学》
查看>>
DFS Codeforces Round #306 (Div. 2) B. Preparing Olympiad
查看>>
K均值聚类
查看>>
[bzoj1568]李超线段树模板题(标志永久化)
查看>>
web基础,用html元素制作web页面
查看>>
[18/11/21] 方法
查看>>
遍历循环
查看>>
iframe跨域解决方案
查看>>
函数名后const
查看>>
jetty加载spring-context容器源码分析
查看>>
方向ajax(http long request实现实时通信)
查看>>
[LeetCode&Python] Problem 746. Min Cost Climbing Stairs
查看>>
如何在DOS窗口复制和粘贴命令
查看>>
总结一下技能
查看>>
css 一张图片做导航
查看>>
个人项目耗时对比记录表
查看>>
评判是人工智能性能的准则
查看>>
XACT_ABORT为默认为off事务发生约束性错误会继续运行,为on发生约束性错误时会rollback...
查看>>
MySQL备份和还原
查看>>
设计模式之建造者模式(简单)
查看>>