PyQt6 中自定义浮点型滑块类
介绍:
在PyQt6中,滑块(Slider)是常用的用户界面元素之一,用于选择数值范围。然而,有时候我们可能需要使用浮点数值,而标准的滑块仅支持整数。为了解决这个问题,我们可以创建一个自定义的浮点型滑块,使其能够处理浮点数值,并在用户界面中提供更精细的控制。
本文将介绍如何使用PyQt6创建一个自定义的浮点型滑块,同时提供一个简单的示例,演示如何在应用程序中使用它。
PyQt6 自定义浮点型滑块
首先,我们创建一个名为 FloatSlider 的自定义滑块类,该类继承自 QSlider,并添加了对浮点数值的支持。以下是代码:
from PyQt6.QtWidgets import QSlider, QLabel, QVBoxLayout, QWidget, QMainWindow, QApplication
from PyQt6.QtCore import Qt, pyqtSignalclass FloatSlider(QSlider):valueChangedFloat = pyqtSignal(float)def __init__(self, parent=None):super().__init__(Qt.Orientation.Horizontal, parent)self._multiplier = 100 # 放大倍数,例如设置为100,就支持两位小数self.valueChanged.connect(self.emitFloatValueChanged)def setFloatValue(self, floatValue):intValue = int(floatValue * self._multiplier)self.setValue(intValue)def floatValue(self):return self.value() / self._multiplierdef emitFloatValueChanged(self):self.valueChangedFloat.emit(self.floatValue())def setMultiplier(self, multiplier):self._multiplier = multiplierdef multiplier(self):return self._multiplier
在上述代码中,FloatSlider 类添加了一个 valueChangedFloat 信号,该信号在浮点数值发生变化时发射。还有一些用于处理浮点数值的方法,如 setFloatValue、floatValue、emitFloatValueChanged 等。
接下来,我们创建一个包含自定义滑块的主窗口类 ExampleWindow,并在该窗口中演示如何使用自定义浮点型滑块。以下是完整的代码:
class ExampleWindow(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self):central_widget = QWidget(self)self.setCentralWidget(central_widget)layout = QVBoxLayout(central_widget)self.float_label = QLabel('Float Value:', self)layout.addWidget(self.float_label)self.float_slider = FloatSlider(self)self.float_slider.setRange(0, 100 * self.float_slider.multiplier()) # 设置范围self.float_slider.setFloatValue(50.0) # 设置初始值self.float_slider.valueChangedFloat.connect(self.updateFloatLabel)layout.addWidget(self.float_slider)def updateFloatLabel(self, value):self.float_label.setText(f'Float Value: {value:.2f}')if __name__ == '__main__':app = QApplication([])window = ExampleWindow()window.setGeometry(100, 100, 300, 200)window.show()app.exec()
在 ExampleWindow 类中,我们使用 FloatSlider 类创建一个浮点型滑块,并设置其范围和初始值。然后,我们将其与一个标签连接,以显示浮点数值。每当滑块的值发生变化时,updateFloatLabel 方法将被调用,更新标签上显示的浮点数值。
这个简单的示例展示了如何在PyQt6中创建和使用自定义的浮点型滑块,为用户提供了更灵活的界面控制。你可以根据实际需求扩展和定制这个自定义滑块类。
完整代码如下:
from PyQt6.QtWidgets import QApplication, QMainWindow, QSlider, QLabel, QVBoxLayout, QWidget
from PyQt6.QtCore import Qt,pyqtSignalclass FloatSlider(QSlider):valueChangedFloat = pyqtSignal(float)def __init__(self, parent=None):super().__init__(Qt.Orientation.Horizontal, parent)self._multiplier = 100 # 放大倍数,例如设置为100,就支持两位小数self.valueChanged.connect(self.emitFloatValueChanged)def setFloatValue(self, floatValue):intValue = int(floatValue * self._multiplier)self.setValue(intValue)def floatValue(self):return self.value() / self._multiplierdef emitFloatValueChanged(self):self.valueChangedFloat.emit(self.floatValue())def setMultiplier(self, multiplier):self._multiplier = multiplierdef multiplier(self):return self._multiplierclass ExampleWindow(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self):central_widget = QWidget(self)self.setCentralWidget(central_widget)layout = QVBoxLayout(central_widget)self.float_label = QLabel('Float Value:', self)layout.addWidget(self.float_label)self.float_slider = FloatSlider(self)self.float_slider.setRange(0, 100 * self.float_slider.multiplier()) # 设置范围self.float_slider.setFloatValue(50.0) # 设置初始值self.float_slider.valueChangedFloat.connect(self.updateFloatLabel)layout.addWidget(self.float_slider)def updateFloatLabel(self, value):self.float_label.setText(f'Float Value: {value:.2f}')if __name__ == '__main__':app = QApplication([])window = ExampleWindow()window.setGeometry(100, 100, 300, 200)window.show()app.exec()```相关文章:
PyQt6 中自定义浮点型滑块类
介绍: 在PyQt6中,滑块(Slider)是常用的用户界面元素之一,用于选择数值范围。然而,有时候我们可能需要使用浮点数值,而标准的滑块仅支持整数。为了解决这个问题,我们可以创建一个自定…...
笔记,B+树
B树面对的场景,是一个有10亿行的表,希望某一列是有序的。这么大的数据量,内存里放不下,需要放在硬盘里。结果,原本运行于内存的二叉树,就升级为B树了。 在二叉树中,每个节点存储着一个数字&…...
代码随想录刷题题Day2
刷题的第二天,希望自己能够不断坚持下去,迎来蜕变。😀😀😀 刷题语言:C / Python Day2 任务 977.有序数组的平方 209.长度最小的子数组 59.螺旋矩阵 II 1 有序数组的平方(重点:双指针…...
【JAVA面向对象编程】--- 探索子类如何继承父类
🌈个人主页: Aileen_0v0🔥学习专栏: Java学习系列专栏 💫个人格言:"没有罗马,那就自己创造罗马~" 目录 继承 继承的普通成员方法调用 及 普通成员变量修改 构造方法的调用 子类构造方法 继承 package Inherit;class Animal …...
从浏览器控制台发送get,post请求
---------------------get请求--------------------------- fetch(url, { method: get, }) .then(response > response.json()) .then(data > { // 获取到响应的数据后的处理逻辑 console.log(data); }) .catch(error > { // 请求发生错误的处理逻…...
海外问卷调查怎么批量做?可以用指纹浏览器吗?
海外问卷调查通常是指产品与品牌上线时,基于消费者、市场调查而组织的问卷调查,包括个人、企业或其他组织,以获取关于市场、消费者行为、产品需求、社会趋势等方面的见解。 通常,研究人员或组织会设计一份问卷,通过在线…...
HarmonyOS 位置服务开发指南
位置服务开发概述 移动终端设备已经深入人们日常生活的方方面面,如查看所在城市的天气、新闻轶事、出行打车、旅行导航、运动记录。这些习以为常的活动,都离不开定位用户终端设备的位置。 当用户处于这些丰富的使用场景中时,系统的位置能力…...
ThinkPHP6学生选课管理系统
有需要请加文章底部Q哦 可远程调试 ThinkPHP6学生选课管理系统 一 介绍 此学生选课管理系统基于ThinkPHP6框架开发,数据库mysql8,前端bootstrap。系统角色分为学生,教师和管理员。学生登录后可进行选课,教师登录后可查看选课情况…...
uniapp如何与原生应用进行混合开发?
目录 前言 1.集成Uniapp 2.与原生应用进行通信 3.实现原生功能 4.使用原生UI组件 结论: 前言 随着移动应用市场的不断发展,使用原生开发的应用已经不能满足用户的需求,而混合开发成为了越来越流行的选择。其中,Uniapp作为一种跨平台的开…...
Csharp(C#)无标题栏窗体拖动代码
C#(C Sharp)是一种现代、通用的编程语言,由微软公司在2000年推出。C#是一种对象导向的编程语言,它兼具C语言的高效性和Visual Basic语言的易学性。C#主要应用于Windows桌面应用程序、Windows服务、Web应用程序、游戏开发等领域。C…...
李宏毅2020机器学习课程笔记(二)- 深度学习
相关专题: 李宏毅2020机器学习资料汇总 本系列笔记: 李宏毅2020机器学习课程笔记(一)- 分类与回归李宏毅2020机器学习课程笔记(二)- 深度学习李宏毅2020机器学习课程笔记(三)- CNN、半监督、RNN文章目录 3. Deep LearningBrief Introduction of Deep Learning(P12)Ba…...
解决电脑蓝屏问题:SYSTEM_THREAD_EXCEPTION_NOT_HANDLED,回到系统还原点
解决电脑蓝屏问题:SYSTEM_THREAD_EXCEPTION_NOT_HANDLED,回到系统还原点 1,蓝屏显示问题1.1,蓝屏1,清楚显示1.2,蓝屏2,模糊显示 2,排除故障问题3,解决蓝屏的有效方法 1&a…...
connectivity_plus 安卓build的时候报错
报错信息 当前版本:connectivity_plus 5.0.2 Flutter 3.13.6 Dart 3.1.3 A problem occurred configuring project :connectivity_plus. > Failed to create Jar file /Users/wangxiangyu/.gradle/caches/jars-8/fef84f4f98be9f93b0b593ccb1e3e207/lint-model-…...
系统部署安装-Centos7-Kafka
文章目录 安装离线安装下载安装 安装 离线安装 下载 可以前往kafka的官网进行下载 https://kafka.apache.org/downloads安装 1.创建安装目录 mdkir /opt/software/kafka mkdir /opt/kafka 2.解压 sudo tar -xzf kafka_2.12-3.6.0.tgz -C /opt/kafka --strip-components…...
94.STM32外部中断
目录 1.什么是 NVIC? 2.NVIC寄存器 3.中断优先级 4.NVIC的配置 设置中断分组编辑 配置某一个中断的优先级 5.什么是EXTI 6.EXTI和NVIC之间的关系 7.SYSCFG 的介绍 1.什么是 NVIC? NVIC是一种中断控制器,主要用于处理 ARM Cort…...
【Linux】快速上手自动化构建工具make/makefile
👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.什么是make / makefile 2…...
HarmonyOS
基本概念 1、ARKTS是由ArkUI框架提供,它是声明式UI 2、声明式UI的思想:- 关心描述UI的呈现结果,而不关心过程;- 状态驱动视图更新自定义组件的组成 关键字说明举例struct声明组件名struct ToDolist 代办组件EntryComponent装饰…...
Docker安装Oracle18c 坑已排完,放心食用
Docker安装Oracle18c 坑已排完,放心食用 0、有问题可邮件我1、拉取 oracle18c 镜像, 推荐使用 zhengqing版本的镜像2、启动容器3、等待容器启动完成, 这一步很慢很慢, 别着急4、进入容器5、修改管理员密码6、查看并设置环境变量7、设置监听模式支持以SID方式连接PDB数据库8、使…...
2023年第十二届数学建模国际赛小美赛C题雪崩防范求解分析
2023年第十二届数学建模国际赛小美赛 C题 雪崩防范 原题再现: 雪崩是极其危险的现象。现在,我们对雪崩是如何形成的已经有了很好的理解,但是我们还不能详细地预测雪崩发生的原因、时间和地点。村庄和道路可以通过各种方式防止雪崩。避免在脆…...
Nginx Openresty通过Lua+Redis 实现动态封禁IP
需求 为了封禁某些爬虫或者恶意用户对服务器的请求,我们需要建立一个动态的 IP 黑名单。对于黑名单中的 IP ,我们将拒绝提供服务。并且可以设置封禁失效时间 环境准备 linux version: centos7 / ubuntu 等 redis version: 5.0.5 nginx version: nginx…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...
pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...
tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...
