首页 > 代码库 > 学习pyqt 基础 3

学习pyqt 基础 3

PyQt4 中的布局管理器

布局管理就是我们在窗口中安排不见位置的方法。布局管理有两种工作方式:绝对定位方式和布局类别方式。一般来说,绝对布局方式用的较少,就像网页,现在不都什么流行响应式布局咩

布局类别方式 (layout classes)

使用布局类别方式的布局管理器比绝对定位方式的布局管理器更加灵活实用。它是窗口部件的首先布局管理方式。最基本的布局类别是QHBoxLayout和QVBoxLayout布局管理方式。

class Boxlayout(QtGui.QWidget):
    def __init__(self, parent = None):
        QtGui.QWidget.__init__(self)
        self.setWindowTitle(‘box layout‘)
        ok = QtGui.QPushButton(‘OK‘)
        cancel = QtGui.QPushButton(‘Cancel‘)
        hbox = QtGui.QHBoxLayout()
        hbox.addStretch(1)
        hbox.addWidget(ok)
        hbox.addWidget(cancel)
        vbox = QtGui.QVBoxLayout()
        vbox.addStretch(1)
        vbox.addLayout(hbox)
        self.setLayout(vbox)
        self.resize(300, 150)
  • 代码都比较容易理解,至于vbox.addStretch()这一方法,意思时加入一个伸缩间隔元素(深入须看文档)

网格布局方式

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()
    j = 0
    pos = [(0, 0), (0, 1), (0, 2), (0, 3),
    (1, 0), (1, 1), (1, 2), (1, 3),
    (2, 0), (2, 1), (2, 2), (2, 3),
    (3, 0), (3, 1), (3, 2), (3, 3),
    (4, 0), (4, 1), (4, 2), (4, 3)]
    for i in names:
        button = QtGui.QPushButton(i)
        if j == 2:
            grid.addWidget(QtGui.QLabel(‘‘), 0, 2)
        else:
            grid.addWidget(button, pos[j][0], pos[j][1])
        j = j + 1
    self.setLayout(grid)
  • 感觉代码还是比较好懂,书上也没怎么讲,我也就…