Pyqt组合控件与QSpacerItem指南

Pyqt组合控件与QSpacerItem指南)

  • 组合控件
      • 效果如下所示:
  • QSpacerItem详解

组合控件

创建一个组合的控件,比如 QCheckBoxQLabel,并为这个组合设置背景颜色,可以将它们放在一个容器小部件中,然后为容器小部件设置背景颜色。

以下是一个示例,演示如何创建一个包含 QCheckBoxQLabel 的组合,并设置组合的背景颜色:

#!/usr/bin/env python

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QHBoxLayout, QLabel, QCheckBox,QVBoxLayout
from PyQt5.QtCore import Qt

app = QApplication(sys.argv)
window = QMainWindow()
window.setGeometry(100, 100, 500, 300)
window.setWindowTitle("Checkbox and Label Combination Example")


# 创建中心小部件
center_widget = QWidget()

# 创建一个布局管理器并将中心小部件添加到布局中
mainlayout = QVBoxLayout()
center_widget.setLayout(mainlayout)

# 设置容器小部件布局
layout = QHBoxLayout()
# 创建一个容器小部件,例如QWidget,用于包含QCheckBox和QLabel
container_widget = QWidget()
container_widget.setStyleSheet("background-color: rgb(35, 43, 57);border-radius: 20px;")  # 设置容器的背景颜色

checkbox = QCheckBox()
label = QLabel("Option 1")
label.setStyleSheet("color: rgb(200, 200, 200);")  # 设置容器的背景颜色
layout.addWidget(checkbox)
layout.addWidget(label)

# 将layout设置为container_widget的布局
container_widget.setLayout(layout)
container_widget.setFixedSize(100, 50)

# 将container_widget 添加至窗户页面
mainlayout.addWidget(container_widget)
# 设置布局管理器将小部件居中对齐
mainlayout.setAlignment(Qt.AlignCenter)

# 将中心小部件设置为主窗口的中央小部件
window.setCentralWidget(center_widget)

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

效果如下所示:

Pyqt组合控件与QSpacerItem指南_第1张图片

QSpacerItem详解

QSpacerItem 是 PyQt5 中的一个布局项(Layout Item),用于在布局中创建空白空间或弹簧效果。它通常用于布局管理中,用于调整布局中的控件之间的间距或对齐方式。QSpacerItem 通常与 QHBoxLayoutQVBoxLayout 和其他布局管理器一起使用。

以下是关于 QSpacerItem 的一些详细信息:

  1. 创建 QSpacerItem:您可以使用 QSpacerItem 的构造函数来创建一个 QSpacerItem 实例。构造函数通常接受宽度、高度、最小宽度、最小高度和布局策略等参数。

    spacer = QSpacerItem(width, height, hPolicy, vPolicy)
    
    • widthheightQSpacerItem 的宽度和高度。

    • hPolicyvPolicy 分别是水平和垂直方向上的布局策略,可以是 QSizePolicy 中的常量,如 QSizePolicy.ExpandingQSizePolicy.Minimum 等。

      QSizePolicyQSizePolicy 用于控制控件在布局中如何占用空间。它可以指定一个控件的水平和垂直方向上的扩展和收缩策略。QSizePolicy 中有一些常用的常量,如下:

      • QSizePolicy.Fixed:固定大小,控件不会扩展或收缩。
      • QSizePolicy.Minimum:尽可能小,但可以扩展。
      • QSizePolicy.Maximum:尽可能大,但可以收缩。
      • QSizePolicy.Preferred:默认大小,可以扩展或收缩。
      • QSizePolicy.Expanding:可以扩展,但不会收缩。
      • QSizePolicy.MinimumExpanding:尽可能小,但可以扩展。
      • QSizePolicy.Ignored:忽略,控件将被忽略,不参与空间分配。

      这些常量允许您指定控件在布局中的行为。例如,如果您希望控件在水平方向上扩展以填充可用空间,您可以将水平策略设置为 QSizePolicy.Expanding。如果您希望控件保持固定大小,可以将策略设置为 QSizePolicy.Fixed

  2. QSpacerItem 添加到布局:要在布局中使用 QSpacerItem,可以使用布局管理器的 addSpacerItem 方法将其添加到布局中。

    layout.addSpacerItem(spacer)
    
  3. 调整 QSpacerItem:您可以设置 QSpacerItem 的大小、最小大小和布局策略来控制它在布局中的大小和行为。

  4. 用途

    • 创建固定的间距或边距,以使布局中的控件分隔开。
    • 创建弹簧效果,以将控件推到布局的一侧或另一侧。
    • 控制控件的对齐方式,例如水平和垂直对齐。

下面是一个示例,演示如何使用 QSpacerItem 来创建一个包含按钮的布局,并在按钮前后添加弹簧效果:

#!/usr/bin/env python

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QPushButton, QSpacerItem, QSizePolicy,QWidget
from PyQt5.QtCore import Qt

app = QApplication(sys.argv)
window = QMainWindow()
window.setGeometry(100, 100, 300, 100)
window.setWindowTitle("QSpacerItem Example")

# 创建中心小部件
center_widget = QWidget()

# 创建一个布局管理器并将中心小部件添加到布局中
mainlayout = QVBoxLayout()
center_widget.setLayout(mainlayout)

layout = QVBoxLayout()

button1 = QPushButton("Button 1")
layout.addWidget(button1)

spacer = QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
layout.addSpacerItem(spacer)

button2 = QPushButton("Button 2")
layout.addWidget(button2)

spacer = QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
layout.addSpacerItem(spacer)

button3 = QPushButton("Button 3")
layout.addWidget(button3)

# 将container_widget 添加至窗户页面
mainlayout.addLayout(layout)
# 设置布局管理器将小部件居中对齐
mainlayout.setAlignment(Qt.AlignCenter)

# 将中心小部件设置为主窗口的中央小部件
window.setCentralWidget(center_widget)
window.show()
sys.exit(app.exec_())

在上述示例中,我们使用 QSpacerItem 创建了两个弹簧效果,它们将按钮推到布局的两侧。这通过设置 QSizePolicy 来实现,其中 QSizePolicy.Expanding 意味着弹簧效果,使布局中的控件充分利用可用空间。

你可能感兴趣的:(PyQt,pyqt,python,UI)