PyQt BoxLayout 盒子布局

布局管理以更加灵活和实用的方式使用布局类。QHBoxLayoutQVBoxLayout是分别为水平和垂直对齐控件的基本布局类。

假设我们要在程序的右下角放置两个按钮。要创建这样的布局,我们可以使用两个框,一个水平和一个垂直。为了创建必要的自由空间,我们将添加一个拉伸因子。

 

QBoxLayout示例

下面的示例创建一个QHBoxLayout和一个QVBoxLayout,它使用该按钮添加按钮。

盒子布局

import sys
from PyQt5.QtWidgets import (QApplication, QWidget,
  QPushButton, QVBoxLayout, QHBoxLayout)

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        okButton = QPushButton('OK')
        cancelButton = QPushButton('Cancel')
        hbox = QHBoxLayout()
        hbox.addStretch(1)
        hbox.addWidget(okButton)
        hbox.addWidget(cancelButton)
        vbox = QVBoxLayout()
        vbox.addStretch(1)
        vbox.addLayout(hbox)
        self.setLayout(vbox)
        self.setGeometry(300, 300, 350, 150)
        self.setWindowTitle('Box layout example, QHBoxLayout, QVBoxLayout')  
        self.show()

if __name__ == '__main__':
 app = QApplication(sys.argv)
 ex = Example()
 sys.exit(app.exec_())

代码分析
此示例将两个按钮放在窗口的右下角。调整应用程序窗口大小时,它们固定在右下角。我们同时使用HBoxLayout和QVBoxLayout布局。

okButton = QPushButton('OK')                                                                                                       can    cancelButton = QPushButton('Cancel')

我们创建了两个按钮。

hbox = QHBoxLayout()
hbox.addStretch(1)
hbox.addWidget(okButton)
hbox.addWidget(cancelButton)

我们创建了一个水平框布局,添加了拉伸因子(addStretch)和添加了(addWidget)两个按钮。

在添加两个按钮之前添加了拉伸因子,它将两个按钮推到窗口的右侧。

vbox = QVBoxLayout()
vbox.addStretch(1)
vbox.addLayout(hbox)

要获得所需的布局,我们还需要将水平布局放入垂直布局。垂直框上的拉伸因子将包含内部控件的水平框推到窗口底部。

self.setLayout(vbox)

最后,我们设置窗口的主要布局。

标签

发表评论