PyQt5 Tutorials

精通PyQt5盒布局:QVBoxLayout和QHBoxLayout

Spread the love

PyQt5 提供强大的布局管理器来有效地排列窗口部件。盒式布局,特别是 `QVBoxLayout`(垂直)和 `QHBoxLayout`(水平),是创建结构化用户界面的基础。本教程将探讨这些布局,演示它们的用法以及如何控制窗口部件的对齐方式。

目录:

垂直盒式布局 (QVBoxLayout)

`QVBoxLayout` 将窗口部件垂直排列,一个接一个地堆叠它们。这非常适合创建表单、列表或任何需要列式排列的场景。


import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QPushButton

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("垂直盒式布局示例")

layout = QVBoxLayout()
layout.addWidget(QLabel("这是一个标签。"))
layout.addWidget(QPushButton("点击我!"))
layout.addWidget(QLabel("另一个标签。"))

window.setLayout(layout)
window.show()
sys.exit(app.exec_())

此代码创建一个窗口,其中包含一个垂直布局,其中包含一个标签、一个按钮和另一个标签。

水平盒式布局 (QHBoxLayout)

`QHBoxLayout` 水平排列窗口部件,将它们并排放置。将其用于工具栏、对相关控件进行分组或将窗口部件排列成一行。


import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QLabel, QPushButton

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("水平盒式布局示例")

layout = QHBoxLayout()
layout.addWidget(QLabel("标签 1"))
layout.addWidget(QPushButton("按钮 1"))
layout.addWidget(QLabel("标签 2"))

window.setLayout(layout)
window.show()
sys.exit(app.exec_())

此示例与前一个示例类似,但使用 `QHBoxLayout` 进行水平排列。

控制窗口部件对齐方式

盒式布局中的窗口部件默认为顶部/左对齐。要控制对齐方式,请使用 `setAlignment()` 方法和标志,例如 `Qt.AlignHCenter`(水平居中)、`Qt.AlignVCenter`(垂直居中)或它们的组合。这将窗口部件在其在布局中分配的空间内居中。


import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QLabel, QPushButton, Qt

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("窗口部件对齐方式示例")

layout = QHBoxLayout()
label = QLabel("居中标签")
layout.addWidget(label)
layout.setAlignment(label, Qt.AlignHCenter | Qt.AlignVCenter)

button = QPushButton("按钮")
layout.addWidget(button)

window.setLayout(layout)
window.show()
sys.exit(app.exec_())

此示例在布局中水平和垂直居中一个标签。

嵌套布局以创建复杂的UI

对于更复杂的UI,将布局彼此嵌套。这允许对窗口部件放置进行复杂的安排和细粒度的控制。


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

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("嵌套布局示例")

mainLayout = QVBoxLayout()

# 上部区域的水平布局
topLayout = QHBoxLayout()
topLayout.addWidget(QLabel("左上"))
topLayout.addWidget(QPushButton("右上"))
mainLayout.addLayout(topLayout)

# 下部区域的垂直布局
bottomLayout = QVBoxLayout()
bottomLayout.addWidget(QLabel("底部"))
mainLayout.addLayout(bottomLayout)

window.setLayout(mainLayout)
window.show()
sys.exit(app.exec_())

此示例演示了将水平布局嵌套在垂直布局中以创建两部分UI。

本教程提供了在 PyQt5 中使用盒式布局的基础。请浏览 PyQt5 文档以了解更高级的布局选项和功能,以构建复杂且用户友好的应用程序。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注