Pyqt组合控件与QSpacerItem指南

news2024/11/20 4:56:02

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_())

效果如下所示:

在这里插入图片描述

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 意味着弹簧效果,使布局中的控件充分利用可用空间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1112194.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode——数组的旋转

189. 轮转数组 class Solution { public:void rotate(vector<int>& nums, int k) {int lennums.size();vector<int> num(len);for(int i0;i<len;i){num[(ik)%len]nums[i];}nums.assign(num.begin(),num.end());} };旋转数组 没看出数学公式gg 正确答案 cl…

经典文献阅读之--Calib Anything(使用SAM的无训练标定雷达相机外参)

0. 简介 Camera与LiDAR之间的外部标定研究正朝着更精确、更自动、更通用的方向发展&#xff0c;由于很多方法在标定中采用了深度学习&#xff0c;因此大大减少了对场景的限制。然而&#xff0c;数据驱动方法具有传输能力低的缺点。除非进行额外的训练&#xff0c;否则它无法适…

安卓Ampere Pro(充电评测)v4.09解锁专业版,供大家学习研究参考!

软件功能 支持查看充电的状态&#xff0c;充电速度是否正常&#xff0c;都可以轻松测试。 强大的测试功能&#xff0c;让你全面了解充电的状态。 温度过高提醒&#xff0c;保证手机的温度不过高&#xff0c;及时拔掉电源。 设置通知优先级&#xff0c;最高、较高、默认、较…

Zookeeper集群 + Kafka集群的详细介绍与部署

文章目录 1. Zookeeper 概述1.1 简介1.2 Zookeeper的工作机制1.3 Zookeeper 主要特点1.4 Zookeeper 数据结构1.5 Zookeeper的相关应用场景1.5.1 统一命名服务1.5.2 统一配置管理1.5.3 统一集群管理1.5.4 服务器动态上下线1.5.5 软负载均衡 1.6 Zookeeper 选举机制1.6.1 第一次启…

SI基础知识:说一说玻纤布规格(如1078)的具体含义,以及等效Dk计算

玻纤布的编织包含经向和纬向两个不同的方向&#xff0c;这些玻璃布并没有被紧密放置在一起&#xff0c;在玻纤布上会有开窗&#xff0c;而且经向开窗和纬向开窗大小不同。 IPC定义了每种玻纤布的编织密度以及所用玻璃丝的规格&#xff0c;如下图所示。 看上面的表格&#xff0c…

Fast DDS之Subscriber

目录 SubscriberSubscriberQosSubscriberListener创建Subscriber DataReaderSampleInfo读取数据 Subscriber扮演容器的角色&#xff0c;里面可以有很多DataReaders&#xff0c;它们使用Subscriber的同一份SubscriberQos配置。Subscriber可以承载不同Topic和数据类型的DataReade…

【算法学习】归并算法Merge Sort总结

归并排序思路简单&#xff0c;速度仅次于快速排序&#xff0c;为稳定排序算法&#xff0c;一般用于对总体无序&#xff0c;但是各子项相对有序的数列。 1. 基本思想 归并排序使用分治思想&#xff0c;分治模式下每一层递归有三个步骤&#xff1a; 分解&#xff08;divide)&a…

1813_ChibiOS的RT系统层

全部学习汇总&#xff1a; GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com) 在ChibiOS中有一个RT系统层的部分&#xff0c;也就是内核的系统层。这个在其他的OS中是没有看到的&#xff0c;这里针对这一部分做一个简单的认识。…

送水订水商城小程序的作用是什么

无论瓶装水还是桶装水在市场中的需求度总是很高&#xff0c;相关送水公司或零售水企业也不少&#xff0c;消费者的购物方式一般是品牌直售或通过经销商&#xff0c;零售水则是超市/商场等场景。随着人们健康品质生活提升&#xff0c;家庭或办公等场所对桶装水或瓶装水的需求日益…

启山智软商城源码新官网震撼上线

欢迎来到我们全新升级的启山智软官网&#xff01; 启山智软一直致力于提供最优质的产品和服务&#xff0c;不断为客户创造更多价值。为了更好地展示我们的品牌形象和产品特色&#xff0c;我们进行了全新的网站升级。新官网拥有更加美观、简洁、直观的界面设计&#xff0c;更加智…

洗地机哪个品牌最好最实用?口碑最好的洗地机

当代人的家庭清洁方式&#xff0c;都悄摸摸的用上了智能扫地机或者洗地机&#xff0c;但是扫地机机器人对于一些顽固污渍的清洁能力略差&#xff0c;人不在家里的时候总担心会碰到啥东西卡机&#xff0c;所以&#xff0c;洗地机更适合对于清洁有高要求的人群&#xff0c;毕竟自…

开发过程中的八种确认方法

确认是确保做了正确的事情&#xff0c;方向不偏。确认可以在项目前期做&#xff0c;也可以在项目后期做&#xff0c;提倡持续确认、质量左移。在前期主要是检测需求的质量&#xff0c;在后期是检测完成的系统是否真的是客户所需。开发过程中常见的八种确认手段有&#xff1a; 1…

【APUE】进程

目录 一、进程标识符 pid 1.1 类型 pid_t 1.2 命令 ps 1.3 getpid && getppid 二、进程的产生 2.1 fork 简介 2.2 fork 实例 1 2.3 fork 实例 2 2.4 vfork 三、进程的消亡及释放资源 3.1 wait 3.2 waitpid 3.3 应用&#xff1a;进程分配初探 四、exec…

基于SSM的疫情期间高校师生外出请假管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

十八、字符串(1)

本章概要 字符串的不可变 的重载与 StringBuilder 意外递归字符串操作 字符串操作毫无疑问是计算机程序设计中最常见的行为之一。 在 Java 大展拳脚的 Web 系统中更是如此。在本章中&#xff0c;我们将深入学习在 Java 语言中应用最广泛的 String 类&#xff0c;并研究与之相关…

功率放大器在材料测试中的应用有哪些

功率放大器在材料测试中有广泛的应用&#xff0c;尤其在材料的物理、电子和热学性质等方面的研究中起到了重要的作用。下面Aigtek安泰将详细介绍功率放大器在材料测试中的一些主要应用。 电学特性测试&#xff1a;功率放大器用于材料的电学特性测试&#xff0c;如电导率、介电常…

划词搜索IP插件

插件背景 浏览器插件可以让用户根据个人工作及日常需求来定制浏览器的功能和界面。当用户在网页上看到一些IP地址时&#xff0c;或许会好奇它们的来源和归属。传统的做法是&#xff0c;用户需要复制这个IP地址&#xff0c;然后跳转到埃文科技旗下的http://IPUU.net网站进行查询…

分类预测 | MATLAB实现基于BiLSTM-AdaBoost双向长短期记忆网络结合AdaBoost多输入分类预测

分类预测 | MATLAB实现基于BiLSTM-AdaBoost双向长短期记忆网络结合AdaBoost多输入分类预测 目录 分类预测 | MATLAB实现基于BiLSTM-AdaBoost双向长短期记忆网络结合AdaBoost多输入分类预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于BiLSTM-…

MMoE: 基于多门专家混合的多任务学习任务关系建模

文章链接&#xff1a;Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts 发表会议: KKD 2018 &#xff08;Knowledge Discovery and Data Mining&#xff0c;数据挖掘领域顶会&#xff09; 目录 1.背景介绍Recommendation SystemMulti-…

wps excel js编程

定义全局变量 const a "dota" function test() {Debug.Print(a) }获取表格中单元格内容 function test() {Debug.Print("第一行第二列",Cells(1,2).Text)Debug.Print("A1:",Range("A1").Text) }写单元格 Range("C1").Val…