当前位置: 首页 > news >正文

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 信号,该信号在浮点数值发生变化时发射。还有一些用于处理浮点数值的方法,如 setFloatValuefloatValueemitFloatValueChanged 等。

接下来,我们创建一个包含自定义滑块的主窗口类 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…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage)&#xff1a…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

VisualXML全新升级 | 新增数据库编辑功能

VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...

es6+和css3新增的特性有哪些

一:ECMAScript 新特性(ES6) ES6 (2015) - 革命性更新 1,记住的方法,从一个方法里面用到了哪些技术 1,let /const块级作用域声明2,**默认参数**:函数参数可以设置默认值。3&#x…...

Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解

文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...

SQL进阶之旅 Day 22:批处理与游标优化

【SQL进阶之旅 Day 22】批处理与游标优化 文章简述(300字左右) 在数据库开发中,面对大量数据的处理任务时,单条SQL语句往往无法满足性能需求。本篇文章聚焦“批处理与游标优化”,深入探讨如何通过批量操作和游标技术提…...