10 PyQt5布局管理之常见布局管理器

在上一篇教程中,我们学习了第一个 PyQt5 应用和应用程序的主循环。随着对 PyQt5 基础知识的积累,今天我们将深入探讨布局管理器的使用。布局管理器在创建 GUI 应用时扮演着至关重要的角色,因为它们帮助我们控制窗口中控件的排列方式,使得界面更加美观和易于使用。

布局管理器简介

在 PyQt5 中,常用的布局管理器有以下几种:

  1. QHBoxLayout:水平布局管理器
  2. QVBoxLayout:垂直布局管理器
  3. QGridLayout:网格布局管理器
  4. QFormLayout:表单布局管理器

每种布局管理器都有其独特的用途,选择合适的布局管理器可以显著提高界面的可读性和用户体验。

QHBoxLayout(水平布局管理器)

QHBoxLayout 允许我们在窗口中水平排列控件。适用于需要在一行中放置多个控件的场景。

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QPushButton

class HBoxLayoutDemo(QWidget):
def __init__(self):
super().__init__()

self.setWindowTitle("QHBoxLayout 示例")

# 创建水平布局管理器
layout = QHBoxLayout()

# 创建按钮并添加到布局中
btn1 = QPushButton("按钮 1")
btn2 = QPushButton("按钮 2")
btn3 = QPushButton("按钮 3")

layout.addWidget(btn1)
layout.addWidget(btn2)
layout.addWidget(btn3)

# 将布局应用到主窗口
self.setLayout(layout)

if __name__ == "__main__":
app = QApplication(sys.argv)
demo = HBoxLayoutDemo()
demo.show()
sys.exit(app.exec_())

QVBoxLayout(垂直布局管理器)

QVBoxLayoutQHBoxLayout 类似,但它是将控件垂直排列。适合需要从上到下排列控件的场景。

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class VBoxLayoutDemo(QWidget):
def __init__(self):
super().__init__()

self.setWindowTitle("QVBoxLayout 示例")

# 创建垂直布局管理器
layout = QVBoxLayout()

# 创建按钮并添加到布局中
btn1 = QPushButton("按钮 1")
btn2 = QPushButton("按钮 2")
btn3 = QPushButton("按钮 3")

layout.addWidget(btn1)
layout.addWidget(btn2)
layout.addWidget(btn3)

# 将布局应用到主窗口
self.setLayout(layout)

if __name__ == "__main__":
app = QApplication(sys.argv)
demo = VBoxLayoutDemo()
demo.show()
sys.exit(app.exec_())

QGridLayout(网格布局管理器)

QGridLayout 允许我们将控件放置在一个类似表格的网格中,可以灵活地控制控件的行列位置。

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class GridLayoutDemo(QWidget):
def __init__(self):
super().__init__()

self.setWindowTitle("QGridLayout 示例")

# 创建网格布局管理器
layout = QGridLayout()

# 创建按钮并添加到布局中,指定位置
btn1 = QPushButton("按钮 1")
btn2 = QPushButton("按钮 2")
btn3 = QPushButton("按钮 3")
btn4 = QPushButton("按钮 4")

layout.addWidget(btn1, 0, 0) # 第一行第一列
layout.addWidget(btn2, 0, 1) # 第一行第二列
layout.addWidget(btn3, 1, 0) # 第二行第一列
layout.addWidget(btn4, 1, 1) # 第二行第二列

# 将布局应用到主窗口
self.setLayout(layout)

if __name__ == "__main__":
app = QApplication(sys.argv)
demo = GridLayoutDemo()
demo.show()
sys.exit(app.exec_())

QFormLayout(表单布局管理器)

QFormLayout 适用于需要将标签和输入框成对排列的场景,常用于表单输入。

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from PyQt5.QtWidgets import QLineEdit, QLabel, QFormLayout

class FormLayoutDemo(QWidget):
def __init__(self):
super().__init__()

self.setWindowTitle("QFormLayout 示例")

# 创建表单布局管理器
layout = QFormLayout()

# 创建标签和输入框并添加到布局中
name_label = QLabel("姓名:")
name_input = QLineEdit()
email_label = QLabel("邮箱:")
email_input = QLineEdit()

layout.addRow(name_label, name_input)
layout.addRow(email_label, email_input)

# 将布局应用到主窗口
self.setLayout(layout)

if __name__ == "__main__":
app = QApplication(sys.argv)
demo = FormLayoutDemo()
demo.show()
sys.exit(app.exec_())

小结

今天,我们介绍了 PyQt5 中几种常见的布局管理器,包括 QHBoxLayoutQVBoxLayoutQGridLayoutQFormLayout。这些布局管理器可以帮助我们有效地组织控件,使得用户界面更加清晰美观。

在下一篇文章中,我们将结合实际案例,学习如何更好地使用这些布局管理器来创建复杂的界面。这将为我们的 PyQt5 学习之旅打开新的维度。继续保持关注!

10 PyQt5布局管理之常见布局管理器

https://zglg.work/pyqt5-you-need/10/

作者

IT教程网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论