标签:
最通用的布局类别是网格布局(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。
标签:
原文地址:http://www.cnblogs.com/moonlightpoet/p/5328573.html