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

QLineEdit的提交前验证

QLineEdit是pyqt中常用的输入控件,默认情况下,它可以接受键盘输入的任何可打印字符。有时候,我们需要在用户提交前对其输入的内容先行验证,当用户输入不符合预期时予以清空,这就需要对QLineEdit控件进行以下操作:

1、创建一个验证器实例,并将其绑定到QLineEdit控件上。示例代码片段如下:

# 创建一个 QIntValidator 实例,限制用户输入整数,设置范围为 1 到 30
validator = QIntValidator(1, 30, self)
# 将验证器设置到 QLineEdit 上
self.line_edit.setValidator(validator)

2、有必要时创建一个自定义验证函数,并将其连接到textChanged事件。示例代码片段如下:

# 连接 textChanged 信号到自定义的验证函数
self.line_edit.textChanged.connect(self.validate_input)

以下是一个完整示例,创建一个农历日期输入器,只能输入1到当月最大的农历日期。确定当月最大的农历日期时采用了lunarcalendar模块。考虑到农历每月只可能有30天和29天,我们先用30作为日期构建一个lunarcalendar.Lunar对象,如果发生了DateNotExist异常,则说明当月最大日期为29,否则为30。具体代码如下:

import sysfrom PyQt5.QtCore import Qt
from PyQt5.QtGui import QIntValidator
from PyQt5.QtWidgets import QDialog, QLineEdit, QVBoxLayout, QLabel, QHBoxLayout, QCheckBox, QPushButton, QApplication, \QGroupBox, QMessageBoxfrom lunarcalendar import Lunar, DateNotExistclass InputDayDlg(QDialog):def __init__(self, year, month):self.day = 0super().__init__()day_label = QLabel("农历日子:")self.line_edit = QLineEdit(self)# 创建复选框self.leap_checkbox = QCheckBox('闰月', self)day_layout = QHBoxLayout()day_layout.addWidget(day_label)day_layout.addWidget(self.line_edit)day_layout.addWidget(self.leap_checkbox)day_group = QGroupBox()self.isleap = self.leap_checkbox.isChecked()self.max_day = self.get_max_day(year, month, self.isleap)# 在文本框中显示提示文本self.line_edit.setPlaceholderText(f'请输入1 - {self.max_day}之间的数字')self.line_edit.setFixedWidth(188)# 创建一个 QIntValidator 实例,设置范围为 1 到 max_dayvalidator = QIntValidator(1, self.max_day, self)# 将验证器设置到 QLineEdit 上self.line_edit.setValidator(validator)# 连接 textChanged 信号到自定义的验证函数self.line_edit.textChanged.connect(self.validate_input)day_group.setLayout(day_layout)confirm_button = QPushButton("确定")confirm_button.clicked.connect(self.accept)# 创建一个垂直布局layout = QVBoxLayout()layout.addWidget(day_group)layout.addWidget(confirm_button, alignment=Qt.AlignCenter)# 设置布局self.setLayout(layout)def get_day(self):text = self.line_edit.text()while len(text) == 0 or text == '':QMessageBox.warning(self, '注意', f'请输入农历日子,范围为1~{self.max_day}。')self.exec()text = self.line_edit.text()self.day = int(self.line_edit.text())return self.daydef get_max_day(self, year, month, isleap):try:# 农历每月的最大日期只有29天和30天这两种情况,尝试创建30日的Lunar对象,Lunar(year, month, 30, isleap=isleap)# 如果没有抛出异常,说明30日存在,返回最大日期 30return 30except DateNotExist:# 抛出ValueError异常,说明30日不存在,此时返回29return 29def validate_input(self, text):"""限制文本框输入的数字在范围内"""state = self.line_edit.validator().validate(text, 0)[0]if state != QIntValidator.Acceptable:# 如果输入不合法,清空输入框self.line_edit.clear()if __name__ == '__main__':app = QApplication([])dialog = InputDayDlg(2025, 10)if dialog.exec() == QDialog.Accepted:print(dialog.get_day())sys.exit()

上面的代码运行后出现如下对话框:

将月份改成12月,即:

dialog = InputDayDlg(2025, 12)

因为今年没有大年三十,对话框变成:

试着在文本框中输入内容,会发现一旦输入超出范围的字符,文本框就会清空。

除了上面的QIntValidator验证器用于验证整数输入外,常用的验证器还有:

1、QDoubleValidator
用于验证浮点数输入,可设置最小值、最大值和小数位数。

2、QRegularExpressionValidator
用于使用正则表达式验证输入,可根据自定义的正则表达式规则验证输入内容。这个验证器可以充分发挥正则表达式的强大功能,能够满足绝大部分需求。

相关文章:

QLineEdit的提交前验证

QLineEdit是pyqt中常用的输入控件,默认情况下,它可以接受键盘输入的任何可打印字符。有时候,我们需要在用户提交前对其输入的内容先行验证,当用户输入不符合预期时予以清空,这就需要对QLineEdit控件进行以下操作&#…...

【Linux高级IO(二)】初识epoll

目录 1、epoll的接口 2、epoll原理 3、epoll工作方式 1、epoll的接口 #include <sys/epoll.h> 1、int epoll_create(int size) &#xff1a;创建epoll模型 返回值是一个文件描述符&#xff0c;创建一个struct file结构体&#xff0c;指向epoll模型&#xff0c;返回的…...

2018年真题

数学基础 一、 &#xff08;共4分&#xff09;用逻辑符号表达下列语句&#xff08;论域为包含一切事物的集合&#xff09; 1、&#xff08;2分&#xff09;集合A的任一元素的元素都是A的元素 经过对图片文字的识别与逻辑分析&#xff0c;结果如下&#xff1a; 符号定义&…...

Linux xxd命令

目录 一. xxd命令简介二. 简单使用三. -p选项纯16进制输出四. -r选项将十六进制还原成原始内容五. 小应用 一. xxd命令简介 xxd 是一个将文件或输入内容转换为十六进制&#xff08;Hex Dump&#xff09;格式的工具&#xff0c;也可以将十六进制恢复成原始数据。 它在调试二进制…...

高校实验室安全数智化分级分类管理-危化品管理LIMS

一、背景与依据 传统实验室安全管理如同老式挂钟&#xff0c;齿轮咬合处总会随时间产生间隙。为进一步规范学校实验室建设与适用&#xff0c;从源头管控实验室和实验项目安全风险&#xff0c;确保教学科研活动安全有序开展&#xff0c;分级分类体系构建如同绘制实验室的"…...

春芽儿智能跳绳:以创新技术引领运动健康新潮流

在全球运动健康产业蓬勃发展的浪潮中&#xff0c;智能健身器材正成为连接科技与生活的重要纽带。据《中国体育用品产业发展报告》显示&#xff0c;2023年中国智能运动装备市场规模突破千亿元&#xff0c;其中跳绳类目因兼具大众普及性与技术升级空间&#xff0c;年均增速超30%。…...

Fast网络速度测试工具

目录 网站简介 功能特点 测试过程 为什么使用Fast 如果网络速度不达标 网站简介 Fast是一个由Netflix提供的网络速度测试工具&#xff0c;主要用来测试用户的互联网下载速度。它以其简洁的界面和快速的测试过程而受到用户的欢迎。 功能特点 下载速度测试&#xff1a;这是…...

java的文件输入输出流(FileInputStream、FileOutputStream、FileReader、FileWriter)

文章目录 文件输入输出流1 java I/O 流的原理流的分类 2 FileInputStream 文件字节输入流3 FileOutputStream 文件字节输出流4 使用文件字节输入输出流完成对文件的拷贝5 FileReader 文件字符输入流6 FileWriter 文件字符输出流 文件输入输出流 1 java I/O 流的原理 I/O 是 In…...

stm32week10

stm32学习 七.CAN 7.STM32 CAN外设 标识符过滤器&#xff1a; 每个过滤器的核心由两个32位寄存器组成&#xff1a;R1[31:0]和R2[31:0] FSCx&#xff1a;位宽设置&#xff0c;置0为16位&#xff0c;置1为32位 FBMx&#xff1a;模式设置&#xff0c;置0为屏蔽模式&#xff0c;…...

【UnityEditor扩展】如何在 Unity 中创建棱柱体(用作VR安全区检测),同时在编辑器插件中实现与撤销/恢复功能

Unity 编辑器扩展&#xff1a;3D 空间中绘制安全区棱柱体&#xff08;含撤销/恢复/保存/读取&#xff09; 在虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;开发中&#xff0c;安全区是保障用户安全的重要组成部分。通过精确控制用户活动范围&#…...

C++小游戏 合集

生化危机 #include<conio.h> #include<string.h> #include<stdio.h> #include<stdlib.h> #include<windows.h> #include<time.h> #include<direct.h> int n,round,gold0; bool f1,f2,f3,deadfalse,PC_64Bit; char str[4]; struct n…...

常州 d??

回来了&#xff01; 今天&#xff08;&#xff1f;发出来的时候可能已经是第二天了吧 真的爆零了qaq 挺难的 最高分只有100 而且t2t3t4一个人都没拿分qaq 这段时间在写网络流 唉博客还是不要写太水了 抄一点网络流代码上来 EK不写了 dinic会就行了 板子题洛谷p3376 dini…...

juc并发包的常用类、线程安全实现方式、锁机制及 JVM 优化策略

juc并发包的常用类、线程安全实现方式、锁机制及 JVM 优化策略 1. juc包下的常用类&#xff1a;线程池&#xff1a;并发集合类&#xff1a;同步工具类&#xff1a;原子类&#xff1a; 2. 怎么保证多线程安全&#xff1a;3. Java中常用锁及使用场景&#xff1a;4. 线程同步的方法…...

学习日记-0407(Inductive Matrix Completion Using Graph Autoencoder)

论文阅读&#xff1a;Inductive Matrix Completion Using Graph Autoencoder 代码&#xff1a;swtheing/IMC-GAE 总而言之就是设计了一个不同评分下的邻接图&#xff0c;然后对每一个评分图T进行独立GNN编码。这个 GNN 编码器主要由三个组件构成&#xff1a;嵌入层、消息传递层…...

FPGA入门:状态机思想编程

一、状态机思想编写流水灯 1、状态机思想的概念 状态机思想是一种用于描述和处理具有多个状态以及状态之间转换关系的系统的思维方式。以下是对其主要概念、应用场景和优势的介绍&#xff1a; 主要概念 状态&#xff1a;指系统在某一时刻的状况或条件。例如&#xff0c;在一…...

【电路笔记】-切换触发器

切换触发器 文章目录 切换触发器1、概述2、切换触发器3、JK触发器转换为D型触发器4、D型触发器转换为切换触发器切换触发器是常用的时序逻辑电路,作为单个比特双稳态存储元件,在计数器、存储器设备中经常使用,或作为响应时钟脉冲的分频器。 1、概述 切换触发器是另一种基于…...

示例项目文档模板集:TaskBoard 任务管理系统

一套完整、高可读性、结构清晰的项目文档模板,适用于中小型软件项目的设计、开发、交接与展示全流程。 📌 项目概述文档(overview.md) 📂 项目名称:TaskBoard 🧭 项目简介 TaskBoard 是一款专为敏捷团队打造的任务管理系统,支持任务分配、状态追踪与协作沟通,帮…...

TF-IDF忽略词序问题思考

自从开始做自然语言处理的业务&#xff0c;TF-IDF就是使用很频繁的文本特征技术&#xff0c;他的优点很多&#xff0c;比如&#xff1a;容易理解&#xff0c;不需要训练&#xff0c;提取效果好&#xff0c;可以给予大规模数据使用&#xff0c;总之用的很顺手&#xff0c;但是人…...

代理模式的优缺点是什么?

什么是代理模式&#xff1f; 代理模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式&#xff0c;它通过创建代理对象来控制对原始对象的访问。 这种模式在前端开发中广泛应用&#xff0c;特别是在需要控制对象访问、添加额外逻辑或优化性能的场景中。 ​​核心…...

十分钟上手:Distilling the Knowledge in a Neural Network

概述&#xff1a;知识蒸馏是一种模型压缩技术&#xff0c;通过让轻量化的学生模型模仿复杂教师模型的输出概率分布&#xff0c;结合软目标和硬目标进行训练&#xff0c;从而将教师模型的泛化能力迁移至学生模型&#xff0c;实现小模型的高效部署而不显著降低性能。 硬目标&…...

百度的deepseek与硅基模型的差距。

问题&#xff1a; 已经下载速度8兆每秒&#xff0c;请问下载30G的文件需要多长时间&#xff1f; 关于这个问题。百度的回答如下&#xff1a; ‌30GB文件下载时间计算‌ ‌理论计算‌&#xff08;基于十进制单位&#xff09;&#xff1a; ‌单位换算‌ 文件大小&#xff1a;3…...

OpenCV 图形API(18)用于执行两个矩阵(或数组)的逐元素减法操作函数sub()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 描述 计算两个矩阵之间的逐元素差值。 sub 函数计算两个矩阵之间的差值&#xff0c;要求这两个矩阵具有相同的尺寸和通道数&#xff1a; dst ( I ) src…...

布谷一对一直播源码android版环境配置流程及功能明细

一&#xff1a;举例布谷交友&#xff08;一对一直播源码&#xff09;搭建部署的基本环境说明 1. 首先安装Center OS 7.9系统&#xff0c;硬盘最低 40G 2. 安装宝塔环境 https://bt.cn&#xff08;强烈推荐使用&#xff09; 3. 安装环境 ● PHP 7.3&#xff08;安装redis扩展…...

#MongoDB 快速上手

docker pull mongo docker run -d --name my-mongo -p 27017:27017 mongo docker exec -it my-mongo mongo &#x1f6aa;进入 Mongo Shell 后的第一步 你进入后会看到类似提示符&#xff1a; >说明已经进入 Mongo Shell&#xff0c;现在就可以操作数据库了。 &#x1…...

docker相关命令

常用命令 #创建并启动 docker-compose up -d # 启动之后就可以通过浏览器访问了 #停止并删除 docker-compose down #重启 docker-compose restart #停止 docker-compose stop #启动 docker-compose startdocker search #搜索镜像(只搜索官方仓库的&#xff0c;官方仓库地址&am…...

浅谈进程与程序的区别

如大家所了解的&#xff0c;进程与程序是有区别的。 下面做了一个总结&#xff0c;供大家参考、学习&#xff1a; 1. 程序是指令的有序集合&#xff0c;是一个静态的概念&#xff0c;其本身没有任何运行的含义。进程是程序在 CPU 上的一次执行过程&#xff0c;是一个动态的概…...

redis 和 MongoDB都可以存储键值对,并且值可以是复杂json,用完整例子分别展示说明两者在存储json键值对上的使用对比

Redis 存储 JSON 键值对示例 存储操作&#xff1a; // 存储用户信息&#xff08;键&#xff1a;user:1001&#xff0c;值&#xff1a;JSON对象&#xff09; SET user:1001 {"name":"Alice", "age":30, "address":"New York&quo…...

基于chatgpt得到的生活成本计算

意大利的生活成本因城市而异&#xff0c;比如米兰和罗马相对较贵&#xff0c;而南部城市如那不勒斯或巴勒莫则便宜一些。下面是意大利大致的基本生活成本和费用明细&#xff08;以欧元€为单位&#xff0c;2025年初数据为基础&#xff0c;具体数值可能随时间和汇率略有变化&…...

C和C++有什么区别?

C和C是两种不同的编程语言&#xff0c;虽然它们有许多相似之处&#xff0c;但也存在一些关键的区别。 C是一种过程化编程语言&#xff0c;专注于函数和流程控制&#xff0c;非常适合系统级编程。而 C是一种面向对象编程语言&#xff0c;支持类、对象和封装、继承、多态等特性。…...

力扣1338 === 贪心算法解决数组减半问题

目录 问题分析 方法思路&#xff1a;贪心算法 步骤分解 代码解释 复杂度分析 正确性证明 示例验证 边界情况 总结 要解决这个问题&#xff0c;我们需要找到最少需要删除的不同整数集合&#xff0c;使得剩余的元素个数不超过原数组的一半。以下是对该问题的详细分析和解…...

企业知识库如何搭建?应对高频咨询的AI自助问答系统

在客户服务和内部沟通中&#xff0c;“同样的问题被反复问”、“信息找不到”、“新员工上手慢”等现象屡见不鲜。为了提升企业运营效率&#xff0c;越来越多企业开始重视知识库建设&#xff0c;而“企业知识库如何搭建”也成为热门话题。 尤其在AI技术快速发展的今天&#xf…...

UE5学习笔记 FPS游戏制作44 统一UI大小 sizeBox

如果我们希望多个类似的UI大小一样&#xff0c;例如不同菜单的标题&#xff0c;可以使用sizeBox组件 我们在标题控件上&#xff0c;用sizeBox包裹所有子物体 然后指定他的最小宽高&#xff0c;或最大宽高 如果指定的是最小宽高&#xff0c;当子元素&#xff08;如图片&#xf…...

SpringAOP新链浅析

前言 在复现CCSSSC软件攻防赛的时候发现需要打SpringAOP链子&#xff0c;于是跟着前人的文章自己动手调试了一下 参考了大佬的文章 https://gsbp0.github.io/post/springaop/#%E6%B5%81%E7%A8%8B https://mp.weixin.qq.com/s/oQ1mFohc332v8U1yA7RaMQ 正文 依赖于Spring-AO…...

高效网页截图利器:支持长截图、异步加载内容截图、API调用、Docker一键部署!

一、简介 利用playwright自动化工具&#xff0c;模拟浏览器打开网页&#xff0c;实现完整网页截图功能支持长截图&#xff0c;支持异步加载动态渲染内容截图支持docker一键部署支持API调用项目地址&#xff1a;https://github.com/luler/hello_screenshot 二、安装 提前安装好d…...

处理语言模型返回的响应

completion.choices[0].message.content 是在处理语言模型&#xff08;如 OpenAI 的 GPT 系列&#xff09;返回的响应时&#xff0c;用于 访问模型生成的文本内容的代码路径。为了更好地理解它&#xff0c;我们需要先了解语言模型响应的结构。 1. 响应的结构 当使用语言模型&…...

Go语言类型捕获及内存大小判断

代码如下&#xff1a; 类型捕获可使用&#xff1a;reflect.TypeOf()&#xff0c;fmt.Printf在的%T。 内存大小判断&#xff1a;len()&#xff0c;unsafe.Sizeof。 package mainimport ("fmt""unsafe""reflect" )func main(){var i , j 1, 2f…...

Java 大视界 -- Java 大数据机器学习模型在智能客服多轮对话系统中的优化策略(179)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

CAS号:288574-78-7,Zinpyr-1可用作PET传感器

试剂描述&#xff1a; Zinpyr-1&#xff08;ZP-1&#xff09;是一种具细胞膜渗透性的荧光探针&#xff0c;选择性检测锌离子&#xff08;Zn2&#xff09;&#xff08;Kd 0.7 0.1 nM&#xff09;。一旦与金属离子复合&#xff0c;诱发荧光信号产生。活细胞内&#xff0c;Zinpyr…...

【JVM调优实战指南:从案例分析到性能优化】

一、JVM 调优核心原则 JVM 调优旨在平衡系统的吞吐量、延迟和内存使用。在进行 JVM 调优时&#xff0c;我们可以遵循以下原则&#xff1a; 先优化代码&#xff1a;优先排查业务逻辑中的内存泄漏、对象滥用等问题。优化代码不仅能从根本上解决性能问题&#xff0c;还能减少对 J…...

交换机转发原理 和 DNS服务

1. 收到报文后&#xff0c;将其转换为二进制&#xff0c;并记录在缓存当中 2. 根据二进制中的源 MAC 地址&#xff0c;与接收报文的接口&#xff0c;记录对应关系&#xff0c;在 MAC 地址表中&#xff0c;每个动态表项 300S 老化时间。 3. 判断 如果目的 MAC 是组播或广…...

强化学习Q-Learning:DQN

强化学习Q-Learning/DQN 本文是一篇学习笔记&#xff0c;主要参考李宏毅老师的强化学习课程。 目前主流的强化学习方法大致可以分为 policy-based 和 value-based 两大类。之前我们介绍的 policy gradient 策略梯度&#xff0c;就是 policy-based 的方法。本文要介绍的 Q-learn…...

OpenCv(七)——模板匹配、打包、图像的旋转

目录 一、模板匹配 模板匹配原理 1、单模板之间的匹配 &#xff08;1&#xff09;读取并显示待匹配的图片和模板图片 &#xff08;2&#xff09;模板匹配并绘制匹配位置的外接矩形 &#xff08;3&#xff09;显示最终的效果 2、模板与多个对象匹配&#xff0c;仅匹配当前…...

汽车售后诊断 ODX 和 OTX 对比分析报告

一、引言 在汽车行业不断发展的当下&#xff0c;汽车售后诊断技术对于保障车辆性能、维护车主权益以及提升汽车品牌服务质量起着至关重要的作用。随着汽车电子化程度的不断提高&#xff0c;售后诊断所涉及的数据和流程愈发复杂&#xff0c;这就促使行业需要更加标准化、高效化…...

关于图卷积

深入理解神经网络中的图卷积 一、为什么需要图卷积&#xff08;动机&#xff09; 在图结构中&#xff0c;比如&#xff1a; 社交网络&#xff08;节点是人&#xff0c;边是朋友关系&#xff09;分子结构&#xff08;节点是原子&#xff0c;边是化学键&#xff09;知识图谱&a…...

Meta LLaMA 4:对抗 GPT-4o 与 Claude 的开源王牌

2025 年 4 月&#xff0c;Meta 正式发布了 LLaMA 4 系列的首批两款模型。 这两款模型模型分别是&#xff1a;LLaMA 4 Scout 与 LLaMA 4 Maverick&#xff0c;均采用了 专家混合架构&#xff08;Mixture-of-Experts, MoE&#xff09;。 据 Meta 表示&#xff0c;这是首次有 …...

如何进行SQL调优

如何进行SQL调优 SQL 调优是优化数据库查询性能的过程&#xff0c;目的是减少查询的执行时间&#xff0c;提高数据库系统的整体效率。SQL 调优的技巧和方法可以针对不同的数据库管理系统&#xff08;DBMS&#xff09;有所不同&#xff0c;但基本的原则和步骤是相似的。以下是一…...

WAF防护规则配置技巧与企业级安全实践指南

面对日益复杂的Web应用攻击&#xff0c;WAF规则配置直接决定防护体系的有效性。本文深度解析规则优先级编排、误报消减策略、智能学习机制等17项关键技术&#xff0c;结合金融行业API攻击案例与Gartner最新防御框架&#xff0c;为企业提供可落地的WAF优化路径。 WAF规则引擎的…...

第16届蓝桥杯单片机模拟试题Ⅱ

试题 代码 sys.h #ifndef __SYS_H__ #define __SYS_H__#include <STC15F2K60S2.H> //ds1302.c extern unsigned char time[3]; void w_ds1302(); void r_ds1302(); //iic.c float v_adc(unsigned char addr); //sys.c extern float light_v; extern float rb2_v; exte…...

机器学习——ROC曲线、PR曲线

一、ROC曲线简介 1.1 ROC曲线的构成 1.横轴&#xff08;假正率&#xff0c;FPR&#xff09;&#xff1a; 表示负样本被错误分类为正的比例&#xff08;越小越好&#xff09; 2.纵轴&#xff08;真正率&#xff0c;TPR&#xff0c;即召回率&#xff09;&#xff1a; 表示正样…...

Flutter之交互事件

目录&#xff1a; 1、点击事件标准案例1.1、效果图2.1、代码实现 1、点击事件标准案例 1.1、效果图 2.1、代码实现 class FavoriteWidget extends StatefulWidget {const FavoriteWidget({super.key});overrideState<FavoriteWidget> createState() > _FavoriteWidge…...