PyQt QDoubleSpinBox控件用法详解
QDoubleSpinBox 是 PyQt中用于输入浮点数的控件,支持键盘输入和上下箭头调整数值。与QtSpinBox不同,QtSpinBox是用于输入整数的控件。
关键属性和方法
QDoubleSpinBox 的关键属性和方法如下表所示:
| 方法/属性 | 说明 |
|---|---|
setRange(min, max) | 设置数值范围 |
setSingleStep(step) | 设置步长(箭头点击一次的变化量) |
setDecimals(n) | 设置小数位数 |
setValue(value) | 设置当前值 |
value() | 获取当前值 |
valueChanged | 数值变化时触发的信号 |
setPrefix(text) | 添加前缀文本 |
setSuffix(text) | 添加后缀文本 |
基础设置方法
setRange(min, max)
设置数值范围(最小值min,最大值max)。setMinimum(min)/setMaximum(max)
单独设置最小值或最大值。setSingleStep(step)
设置步长(点击箭头时数值的变化量)。setDecimals(prec)
设置显示的小数位数(如prec=2保留两位小数)。setValue(value)
直接设置当前值(需确保值在范围内)。setPrefix(text)/setSuffix(text)
添加前缀或后缀文本(如单位符号)。
值获取方法
value()
返回当前数值(浮点数类型)。textFromValue(value)/valueFromText(text)
自定义数值与文本的转换逻辑(用于输入验证或格式化)。
行为控制方法
setKeyboardTracking(enabled)
控制是否在输入时实时更新值(默认True,实时更新;设为False则在输入完成后更新)。stepBy(steps)
按步长增量调整值(正数增加,负数减少)。stepUp()/stepDown()
触发一次步长增加或减少操作。
输入验证方法
setCorrectionMode(mode)
设置输入修正模式(如QDoubleSpinBox.CorrectToNearestValue自动修正非法值)。validate(text, pos)/fixup(text)
自定义输入验证逻辑(需重写方法)。
信号
valueChanged(double)
数值变化时触发的信号(参数为当前值)。editingFinished()
用户结束编辑(如按下回车或焦点离开)时触发。
其他实用方法
clear()
清空值(重置为最小值或0.0,取决于范围)。setAlignment(alignment)
设置文本对齐方式(如Qt.AlignRight)。setReadOnly(enabled)
设为只读模式(用户不可编辑)。
用法示例
控件初始化
from PyQt5.QtWidgets import QApplication, QWidget, QDoubleSpinBox, QVBoxLayoutapp = QApplication([])
window = QWidget()
layout = QVBoxLayout()# 创建控件并设置初始属性
spinbox = QDoubleSpinBox()
spinbox.setRange(-100.0, 100.0) # 设置数值范围
spinbox.setSingleStep(0.5) # 设置步长(箭头点击一次的变化量)
spinbox.setDecimals(2) # 保留两位小数
spinbox.setValue(3.14) # 设置初始值layout.addWidget(spinbox)
window.setLayout(layout)
window.show()
app.exec_()
信号与槽连接
当用户修改数值时,触发 valueChanged 信号:
def on_value_changed(value):print(f"当前值: {value}")spinbox.valueChanged.connect(on_value_changed)
动态调整范围
根据条件动态修改范围或步长:
# 当数值超过50时,自动扩展范围
def check_range(value):if value > 50.0:spinbox.setRange(0.0, 100.0)else:spinbox.setRange(0.0, 50.0)spinbox.valueChanged.connect(check_range)
格式化显示
添加前缀/后缀或自定义格式:
spinbox.setPrefix("温度: ") # 添加前缀
spinbox.setSuffix("°C") # 添加后缀# 使用自定义格式(如货币)
spinbox.setDecimals(0)
spinbox.setPrefix("$ ")
输入验证
限制用户输入非法值(如超过范围时自动修正):
spinbox.setKeyboardTracking(False) # 输入完成后再验证(而非实时)def validate_input(value):if value < 0:return 0.0 # 自动修正为最小值return valuespinbox.valueFromText = lambda text: validate_input(float(text))
高级用法:自定义步长逻辑
根据当前值动态调整步长(如对数刻度):
def dynamic_step(value):if value < 1.0:return 0.1elif value < 10.0:return 0.5else:return 1.0spinbox.setSingleStep(0.1) # 初始步长def on_step_up():current = spinbox.value()step = dynamic_step(current)spinbox.setValue(current + step)def on_step_down():current = spinbox.value()step = dynamic_step(current)spinbox.setValue(current - step)# 替换默认的上下箭头行为
spinbox.stepUp.connect(on_step_up)
spinbox.stepDown.connect(on_step_down)
相关文章:
PyQt QDoubleSpinBox控件用法详解
QDoubleSpinBox 是 PyQt中用于输入浮点数的控件,支持键盘输入和上下箭头调整数值。与QtSpinBox不同,QtSpinBox是用于输入整数的控件。 关键属性和方法 QDoubleSpinBox 的关键属性和方法如下表所示: 方法/属性说明setRange(min, max)设置数…...
解决Vmware 运行虚拟机Ubuntu22.04卡顿、终端打字延迟问题
亲测可用 打开虚拟机设置,关闭加速3D图形 (应该是显卡驱动的问题,不知道那个版本的驱动不会出现这个问题,所以干脆把加速关了)...
查询Marklogic数据库,因索引配置造成的返回数据count不同的问题
查询Marklogic数据库,因索引配置造成的返回数据count不同的问题 一,问题: 目前由两个MarkLogic DB,其中A表示所有的数据库统称,包含于BCD; 调用查询接口,通过A和B入口且相同的查询条件去查询B…...
ctfshow做题笔记—栈溢出—pwn73、pwn74
目录 一、pwn73(愉快的尝试一下一把梭吧!) 二、pwn74(噢?好像到现在为止还没有了解到one_gadget?) 前言: 抽空闲时间继续学习,记录了两道题,pwn74卡了几天哈哈。 一、pwn73(愉快的尝试一下一把梭吧!) …...
026-zstd
zstd 以下为Zstandard(zstd)压缩算法从原理到代码实现的技术调研报告,结合流程图、结构图及完整C代码实现: 一、核心原理与技术架构 1.1 算法原理 Zstd基于LZ77衍生算法与熵编码(FSE/Huffman)的混合架构&…...
AF3 quat_to_rot函数解读
AlphaFold3 rigid_utils 模块的 quat_to_rot 函数的功能是把四元数转换为旋转矩阵,函数利用预定义的四元数到旋转矩阵的转换表 _QTR_MAT 来简化计算。 理解四元数到旋转矩阵的转换 源代码: _quat_elements = ["a", "b", "c", "d"]…...
Elasticsearch 的搜索功能
Elasticsearch 的搜索功能 建议阅读顺序: Elasticsearch 入门Elasticsearch 搜索(本文) 1. 介绍 使用 Elasticsearch 最终目的是为了实现搜索功能,现在先将文档添加到索引中,接下来完成搜索的方法。 查询的分类&…...
Vala编成语言教程-构造函数和析构函数
构造函数 Vala支持两种略有不同的构造方案:我们将重点讨论Java/C#风格的构造方案,另一种是GObject风格的构造方案。 Vala不支持构造函数重载的原因与方法重载不被允许的原因相同,这意味着一个类不能有多个同名构造函数。但这并不构成问题&…...
Mybatis-plus配置动态多数据源
前言:微服务架构中,有些模块中可能不同组件用不同数据源,或者做数据库主从集群需要读写分离,动态切换数据源,或不同方法需要不同数据源就需要一个快捷方便的方法。引用动态数据源组件dynamic-datasource-spring-boot-s…...
CSS+JS 堆叠图片动态交互切换
结合DeepSeek提供的代码,终于实现了堆叠两张图片动态循环切换,以下是代码: 通过绝对定位放了两张图片 <div class"col-lg-5" style"z-index: 40; position: relative;"><img src"images/banner_1.png&quo…...
内存检查之Valgrind工具
内存检查之Valgrind工具 Author: Once Day Date: 2025年3月26日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章请查看专栏: Linux实践记录_Once-Day的博客-CSD…...
强大的AI网站推荐(第四集)—— Gamma
网站:Gamma 号称:展示创意的新媒介 博主评价:快速展示创意,重点是展示,在几秒钟内快速生成幻灯片、网站、文档等内容 推荐指数:🌟🌟🌟🌟🌟&#x…...
javafx项目结构+代码规范
javafx项目 1. 新建项目,对项目的理解 jdk: 是 Java Development ToolKit 的简称,也就是 Java 开发工具包。JDK 是整个 Java 的核心,包括 Java 运行环境(Java Runtime Envirnment,简称 JRE)&a…...
国外计算机证书推荐(考证)(6 Sigma、AWS、APICS、IIA、Microsoft、Oracle、PMI、Red Hat)
文章目录 证书推荐1. 六西格玛 (6 Sigma)2. 亚马逊网络服务 (AWS)3. 美国生产与库存控制学会 (APICS)4. 内部审计师协会 (IIA)5. 微软 (Microsoft)6. 甲骨文 (Oracle)7. 项目管理协会 (PMI)8. 红帽 (Red Hat) 证书推荐 1. 六西格玛 (6 Sigma) 介绍:六西格玛是一种…...
黑盒测试与白盒测试详解
黑盒测试和白盒测试是软件测试中两种最基本的测试方法,它们在测试视角、测试重点和适用场景等方面存在显著差异。 一、黑盒测试 1. 基本概念 黑盒测试又称功能测试,将软件视为一个"黑盒子",不关心内部结构和实现细节,只…...
准确--配置服务器文件数
某些系统可能在 /etc/security/limits.d/ 目录下有额外配置覆盖全局设置。检查是否存在冲突文件: ls /etc/security/limits.d/如果有文件(如 90-nproc.conf 或 90-nofile.conf),需编辑或删除这些文件中的冲突配置。 确保系统启用…...
《熔化焊接与热切割作业》考试注意事项
考试前的准备 携带必要的证件和材料:考生需携带身份证、准考证等有效证件,以及考试所需的焊接工具、材料等。确保证件齐全,避免因证件问题影响考试。 提前检查焊接设备和工具:在考试前,考生应仔细检查焊接设备和工具是…...
ROS2的发展历史、核心架构和应用场景
以下是对**ROS2(Robot Operating System 2)**的发展历史、核心架构和应用场景的详细解析,覆盖其技术演变、关键特性和生态系统: 一、ROS2的诞生背景:从ROS1到ROS2 1. ROS1的历史与局限 ROS1的起源: 2007年…...
[unity 点击事件] 区域响应点击事件,排除子节点区域,Raycast Target 应用
当我打开一个二级弹窗后,希望可以通过点击弹窗以外的区域来关闭该弹窗。一开始我是在弹窗主节点上挂载了一个 button 组件,该 button 注册的点击事件中关闭该弹窗。在子节点(一个背景图)的image组件上启用 Raycast Target 选项&am…...
鸿蒙生态全解析:应用适配分享
一、鸿蒙系统的技术底座与适配挑战 HarmonyOS NEXT 作为全场景分布式操作系统,通过统一的技术底座和声明式开发框架,实现了 "一次开发,多端部署" 的跨设备协同能力。其核心优势在于: 弹性部署架构:一套系统…...
el-select 可搜索下拉框 在ios、ipad 无法唤出键盘,造成无法输入
下一篇:el-select 可搜索下拉框,选中选项后,希望立即失去焦点,收起键盘,执行其他逻辑 【效果图】:分组展示选项 >【去界面操作体验】 首先,通过 夸克浏览器的搜索: el-select 在 ipad 输入框…...
深度剖析:域名与DNS安全的全方位解读
导语 在互联网的庞大体系中,域名如同我们访问网络资源的“门牌号”,而DNS则像是将门牌号翻译为具体地址的“翻译官”。然而,这看似平常的域名与DNS系统,却面临着诸多安全风险。一旦遭受攻击,可能导致网站无法访问、用户数据泄露等严重后果。了解域名与DNS安全知识,对保障…...
使用ZMQ和protobuf实现C++程序与Python程序的通信
文章目录 背景一 应用场景与需求二 Protobuf: 跨语言数据交换的基石三 通信方案 ZMQ (ZeroMQ) —— 高性能消息中间件四 进阶: 安全性与性能优化五 实践例子: 工厂温度监控系统5.1 场景描述5.2 Protobuf数据结构定义5.3 C数据采集与发布5.4 Python数据接收与可视化5.5 关键实现…...
Linux实现生产者消费者模型
目录 概念及优势 代码实现 概念及优势 生产者消费者模型是一种用于线程同步的模型,在这个模型中有两种角色,生产者生产数据,消费者消费数据。有三种关系,生产者与生产者,消费者与消费者,生产者与消费者。…...
AI驱动下的智能异常处置:海量多元异构数据的挑战与应对
摘要 在QCon北京会议上,AI驱动的智能异常处置成为焦点。会议深入探讨了平台复杂性及处理海量多元异构数据时所面临的挑战,特别是异常识别与根本原因定位的难题。这些挑战要求技术从业者不断优化算法,以提升数据处理效率和准确性。 关键词 …...
Axure设计之中继器表格——拖动列调整位置教程(中继器)
一、原理介绍 实现表格列的拖动排序,主要依赖Axure的动态面板和中继器两大核心功能: 动态面板交互控制 将表格的列标题封装在动态面板中,通过拖拽事件(开始、移动、结束)捕捉用户操作 在拖拽过程中实时计算鼠标位置&…...
基于大数据的各品牌手机销量数据可视化分析系统(源码+lw+部署文档+讲解),源码可白嫖!
摘要 时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,各品牌手机销量数据可视化分析系统当然不能排除在外。基于大数据的各品牌手机销量数据可视化分析系统是在实际应用和软件工程的开发原理之…...
Open CASCADE学习|基于AIS_PointCloud显示点集
定义与用途 AIS_PointCloud是OpenCASCADE中用于表示和管理点云数据的类,能够高效地绘制大量任意彩色点集。它通过Graphic3d_ArrayOfPoints将点数据传递给OpenGL图形驱动程序,以将设定点绘制为“点精灵”数组,且点数据被打包到顶点缓冲区对象…...
c++随记
内存溢出与内存泄漏的区别 今天老师提出的概念问题,搜索了一下 # 内存泄漏与内存溢出的区别 内存泄漏(Memory Leak)和内存溢出(Memory Overflow/Out of Memory)是两种常见的内存相关问题,但它们的含义和产生原因不同: ## 内存泄漏 (Memor…...
GOC作业
实验室logo 题目描述 绘制烧毁实验室logo,它是由半径120,颜色6号色的空心元构成,中间的图案由线段长度为75,半径为15的实心圆构成,颜色从1号色开始,到6号色,如图所示 代码参考: …...
