• Pyqt组合控件与QSpacerItem指南


    Pyqt组合控件与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_())
    
    
    • 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
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    效果如下所示:

    在这里插入图片描述

    QSpacerItem详解

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

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

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

      spacer = QSpacerItem(width, height, hPolicy, vPolicy)
      
      • 1
      • 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)
      
      • 1
    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_())
    
    
    • 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
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

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

  • 相关阅读:
    Win10 开始菜单、微软app和设置都打不开(未解决)
    [Spring Cloud] Hystrix三大特性--降级,熔断,隔离
    C++复习数据类型总结
    uniapp——uniapp基础知识
    SpringMVC与JavaConfig笔记整理
    【现场问题】datax中write部分为Oracle的时候插入clolb类型字段,插入的数据为string且长度过场问题
    容灾演练月报 | 雅安市商业银行四大业务系统完成容灾切换演练
    论文解读(CGC)《CGC: Contrastive Graph Clustering for Community Detection and Tracking》
    Springboot+Easyexcel将数据写入模板文件并导出Excel
    单片机C语言实例:24、红外通讯
  • 原文地址:https://blog.csdn.net/weixin_43990846/article/details/133878640