取消键盘按下Enter键触发QPushButton控件点击事件

QDialog QPushButton响应键盘回车输入的问题 如果QDialog中有default的QPushButton,触发该QPushButton的click。 阅读详情

在PyQt5中,按钮(QPushButton)的默认行为是,当它获得焦点并且用户按下Enter键时,会触发点击事件。如果想要取消这个行为,有以下三种方法。

方法一、重写按钮的KeyPressEvent方法。

from PyQt5.QtWidgets import QApplication, QPushButton, QWidget
from PyQt5.QtCore import Qt
import sys


class Button(QPushButton):
    def __init__(self, title, parent):
        super().__init__(title, parent)


    def keyPressEvent(self, event):
        if event.key() == Qt.Key_Enter or event.key() == Qt.Key_Return:
            return
        super().keyPressEvent(event)


class App(QWidget):
    def __init__(self):
        super().__init__()
        self.button = Button('Button', self)
        self.button.move(50, 50)
        self.setGeometry(300, 300, 300, 200)


app = QApplication(sys.argv)
ex = App()
ex.show()
sys.exit(app.exec_())

在这个例子中,我们创建了一个新的按钮类 Button,它继承自 QPushButton。我们重写了 keyPressEvent 方法,使得当按下 Enter 键或 Return 键时,不会触发任何事件。其他的按键事件会按照默认的方式处理。

方法二、给应用程序或窗口类中安装一个事件过滤器,然后在 eventFilter 方法中拦截并处理按钮的键盘事件。

from PyQt5.QtWidgets import QApplication, QPushButton, QWidget
from PyQt5.QtCore import Qt, QEvent
import sys


class App(QWidget):
    def __init__(self):
        super().__init__()
        self.button = QPushButton('Button', self)
        self.button.installEventFilter(self)    # 为 self.button安装事件过滤器
        self.button.move(50, 50)
        self.setGeometry(300, 300, 300, 200)


    def eventFilter(self, obj, event):
        if obj == self.button and event.type() == QEvent.KeyPress:
            if event.key() in (Qt.Key_Enter, Qt.Key_Return):
                return True
        return super().eventFilter(obj, event)


app = QApplication(sys.argv)
ex = App()
ex.show()
sys.exit(app.exec_())

在这个例子中,我们在 self.button 上安装了一个事件过滤器,然后在 eventFilter 方法中检查是否为按钮的键盘按键事件。如果是,并且按键为 Enter 键或 Return 键,我们返回 True 来拦截并忽略这个事件。其他的事件会按照默认的方式处理

方法三、在QT Designer中,修改QPushButton按钮的"focusPolicy"为"NoFocus"

Qt问题:QDilog按下回车键竟然关闭了,想屏蔽Return键结果和Enter键弄反了,最后还接收不到Return的键盘事件了,气人不 问题描述: 1、程序的QDialog窗口按下回车竟然关闭了,感觉跟奇怪,不知道为什么。 2、最后想要通过重写QDialog的keyPressEvent屏蔽调回车键,结果Return和Enter傻傻分不清楚。 3、Return和Enter搞清楚了之后发现键盘事件竟然接收不到回车键。 这就一个问题引出来另外两个问题了,最后才傻傻的搞清楚。     解释(让我们倒着解释):   关于问题3的解释: 因为QDialog中存在控件的focusPolicy是Qt::StrongFocus,不光导致QDialog的键盘事 阅读详情

相关推荐

Qt QPushButton深度解析:从基础使用到高级定制与性能优化

在GUI开发中,按钮控件是构建用户交互界面的基础元素,其核心功能是响应用户点击并触发特定操作。其工作原理涉及事件处理、状态管理和视觉渲染等多个层面,良好的按钮实现能显著提升应用的用户体验和操作效率。在工程实践中,开发者不仅需要掌握其基本属性和信号槽机制,还需深入理解样式定制、性能优化以及多线程环境下的正确用法。本文聚焦于Qt框架中的QPushButton控件,通过剖析其构造方式、default与autoDefault属性、以及checkable状态管理等热词,并结合样式表定制与事件处理等高频技术点,系统讲解

afhu47033的博客 401

QLineEdit响应回车时避免Button同时响应

在Dialog中有QLineEdit和QPushButton,发现lineEdit响应回车信号的时候,有一个按钮会同时响应点击事件。上网查询之后,得到解决办法: 1、在designer中,找到QPushButton的autoDefault属性,将对勾去掉即可。 2、代码修改 pButton->setAutoDefault(false);

one_happy_coder 3485

Qt按钮控件深度解析:从基础使用到高级定制与性能优化

在图形用户界面(GUI)开发中,按钮作为最基础的交互控件,其设计与实现直接影响用户体验和程序健壮性。从概念上讲,按钮是用户与程序进行瞬时或状态交互的桥梁,其核心原理在于事件驱动模型——通过信号与槽机制响应用户操作。在Qt框架中,这一原理被具体化为QAbstractButton及其子类(如QPushButton、QToolButton等),它们不仅封装了点击检测、状态管理(如按下、悬停、禁用)等底层逻辑,还提供了丰富的可定制性。技术价值上,合理运用按钮控件能提升界面直观性、操作流畅性和代码可维护性。应用场景广

weixin_34150830的博客 421

combobox 处理回车

combobox控件,由一个edit编辑框和一个下拉列表框组成。  BOOL   CTest6Dlg::PreTranslateMessage(MSG*   pMsg)       {         if(   pMsg->message   ==   WM_KEYDOWN   )     {                     switch(   pMsg->wParam   )  

wwwcs59的专栏 1812

Qt按钮控件深度解析:从基础交互到高级自定义与性能优化

在图形用户界面(GUI)开发中,按钮作为最基础的交互控件,其设计与实现直接关系到应用的响应性和用户体验。Qt框架通过信号与槽机制为按钮提供了灵活的交互逻辑,开发者可以连接clicked、pressed等信号来响应用户操作,并通过样式表(QSS)进行视觉定制。在工程实践中,合理的按钮状态管理(如启用/禁用、可切换状态)和性能优化(如避免在paintEvent中进行复杂计算)是提升应用质量的关键。本文以Qt的按钮控件为核心,深入探讨了其家族成员(如QPushButton、QToolButton)的适用场景、自定

weixin_34326179的博客 440

Qt控件深度解析:输入与显示控件的核心原理与实战应用

在桌面应用开发中,用户界面是程序与用户交互的核心。控件的设计与实现直接关系到用户体验,其中输入与显示控件是构建交互式界面的基础。从技术原理上看,控件本质上是封装了特定功能的可视化组件,它们通过事件处理机制响应用户操作,并通过数据模型与业务逻辑进行绑定。在工程实践中,合理选择和使用控件能显著提升开发效率和软件质量。例如,QLabel作为最通用的文本与图像展示器,其性能优化和文本处理是关键;而QLineEdit则通过输入掩码和验证器确保了数据输入的准确性。这些控件广泛应用于表单填写、数据展示、参数配置等场景,是

weixin_33894640的博客 350

Qt在Widget中响应键盘事件

问题:我想在Qt框架下,响应键盘事件(比如回车)。解决办法:重写keyPressEvent这个方法头文件:#ifndef B_BAGD_H #define B_BAGD_H #include <QDockWidget> #include <QKeyEvent> #include <QDebug> namespace Ui { class b_bagd; } ...

finenosora的博客 7742

告别CNN局限:用Transformer+迁移学习搞定高光谱图像分类(附Pytorch代码)

本文探讨了如何利用Transformer的自注意力机制和迁移学习策略解决高光谱图像分类中的挑战。通过结合CNN的局部特征提取和Transformer的全局建模能力,提出的DenseTransformer架构在多个数据集上实现了显著的性能提升。文章还提供了详细的PyTorch实现代码和工程优化技巧,帮助开发者快速应用这一技术。

weixin_32771907的博客 610

Qt开发入门:从零到跨平台GUI低手

Qt开发入门:从零到跨平台GUI低手

Yusei_0523的博客 655

信贷审批中的那些坑:从零开始搭建风控策略体系的5个关键步骤

本文深入探讨了信贷审批中的风控策略体系搭建,从数据陷阱识别、规则冲突诊断到反欺诈攻防,提供了5个关键步骤的实战指南。重点解析了如何通过特征工程、决策树优化和模型可解释性技术,构建动态平衡的风控体系,有效降低逾期风险并提升审批效率。

weixin_29253711的博客 416

某商场G区火灾自动报警与控制系统设计

某商场G区火灾自动报警与控制系统设计 摘要:随着我国经济建设的迅速发展,人民生活水平不断提高,城市用地日益紧张,促使建筑物正朝着高层化、密集化方向发展。高层建筑的特点决定其火灾的危险性和高层建筑的火灾自动报警系统的重要性,一套完整的火灾自动报警及联动控制系统是高层建筑发生火灾时人们生命财产的有利保障,是能否快速准确地发现火情,把火灾扑灭在萌芽状态的关键所在。文章通过消防设计,论述了火灾自动报警及消...

weixin_44026784的博客 5368

Qt登录窗口实战:QMessageBox高级应用与用户体验优化

在桌面应用开发中,模态对话框是实现用户交互反馈的核心组件,它通过阻塞当前流程来确保用户必须处理重要信息。其工作原理基于事件循环机制,在显示期间暂停后续代码执行,直到用户响应。这一技术价值在于能够强制用户关注关键操作结果,避免状态混乱,提升程序的健壮性。在C++/Qt开发领域,QMessageBox作为最常用的模态对话框组件,广泛应用于数据验证、错误处理和状态提示等场景。特别是在登录认证这类关键交互流程中,合理运用QMessageBox的多种形态(信息、警告、错误、询问)与标准按钮组合,能够构建清晰友好的用户

weixin_33834628的博客 482

STM32C8T6HAL库实战:MAX30102心率血氧检测与OLED多级菜单一体化方案

本文详细介绍了基于STM32C8T6和HAL库的MAX30102心率血氧检测与OLED多级菜单一体化方案。内容涵盖硬件连接、CubeMX工程配置、传感器驱动移植、数据滤波算法、OLED显示驱动以及高效的多级菜单系统设计,旨在提供一个稳定、实用且易于移植的嵌入式健康监测项目参考。

weixin_29256771的博客 398

深入C++与QT高频面试题(不定时更新)

本文总结了C++、数据库和Qt相关的常见面试题,涵盖以下核心内容: C++特性与智能指针 智能指针(unique_ptr/shared_ptr/weak_ptr)解决内存管理问题 构造函数/析构函数特性,虚函数与纯虚函数区别 STL容器分类与特性(vector/list/set/map等) 多线程编程 线程创建方式(Thread类/moveToThread) 线程同步机制(互斥锁/条件变量/读写锁) 进程间通信方式(管道/共享内存/消息队列) 数据库基础 事务ACID特性与操作流程 索引原理与使用场景 关系

阿博的博客 1255

数字IC后端设计实现 | PR工具中到底应该如何控制density和congestion?(ICC2&Innovus)

数字IC后端设计实现中到底应该如何控制cell density和congestion?(ICC2和Innovus两种解决方案)

weixin_37584728的博客 7113

【数据集】米级别热红外卫星合集:SDGSAT-1、HotSat-1等

米级别热红外卫星合集:SDGSAT-1、HotSat-1等

WW、forever的博客 1252

qt回车事件不响应问题

qt回车事件不响应问题 由于Qt默认的键盘中有两个Enter键,大键盘Enter键(就是Backspace键下方的Enter键)用的是Qt.Key_Return代表,把上述程序中的Qt.Key_Enter替换掉,果然发现可行了。 另外Qt.Key_Enter代表的是小键盘的Enter键。 另外,可以直接用以下函数触发Enter键 Keys.onEnterPressed: { dosomething();

qq_40164094的博客 1874

基于Simulink建模仿真的滑模控制的磁悬浮轴承稳定控制仿真

磁悬浮轴承(Magnetic Bearing)利用电磁力来支撑和定位转子,无需机械接触,因此在高速旋转设备中具有广泛应用。滑模控制(Sliding Mode Control, SMC)是一种鲁棒性强的非线性控制方法,适用于磁悬浮轴承的精确控制。以下是基于Simulink的磁悬浮轴承滑模控制系统的详细设计与仿真步骤。通过上述步骤,设计并实现了基于 Simulink 和 Control System Toolbox 的磁悬浮轴承滑模控制系统。

MHD0815的博客 780

回车键和button按钮都绑定同一个事件,如何避免按回车的时候button重复点击

保存一个全局变量,用来记录Button的焦点状态 <button onclick="login();" onfocus="window.buttonIsFocused=true;" onblur="window.buttonIsFocused=false;">登录</button> 然后,在keydown回调中增加一次校验就可以了: docume...

akhze86202的专栏 266

S/4HANA 迁移前的必修课:用 SCMON 找出沉睡的自定义代码

SAP S/4HANA迁移项目中,SCMON工具能有效解决历史代码评估难题。通过监控ABAP对象调用情况,SCMON可识别40-60%处于"沉睡"状态的自定义代码。配置时需注意监控周期(建议3-6个月)和数据保留期(建议1年),并配合Time Slices功能进行时段分析。工具导出的调用数据可与测试覆盖率对比,帮助决策代码迁移优先级。实际应用中需结合业务场景,建议与SUSG工具配合使用,并保持持续监控。SCMON虽不能完全替代人工判断,但其提供的客观数据能显著提升迁移决策的科学性,建议在

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 291

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Qt将回车键和提交/确定按钮绑定的教程

优快云上面搜索了一下,发现两种方案,第一种是将输入信息时最后一个文本框的信号函数与提交/确定按钮的槽函数相连接,第二种就是绑定快捷键的方式。 实际上不推荐第二种绑定的方式,因为如果一个页面有多个提交/确定按钮的话这种快捷键绑定只能绑定一个,是非常不方便的。 可能是因为Qt版本的升级,优快云上面几年前的教程给出的按钮槽函数是clicked(),但是经过个人实验和查看Qt自带的帮助,发现clicked()只是信号函数而非槽函数,如果这样写的话控制台会输出槽函数连接失败的信息。 后来经过Qt帮助的查找,发现Q

weixin_45769440的博客 4575

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

按enter回车,会触发button上的事件的原因及解决办法

【代码】按enter回车,会触发button上的事件的原因及解决办法。

学习 记录 总结 分享 3746

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

PyQt5 实现pushButton按钮和键盘的enter键绑定

我的需求: 首先,我做了一个登陆界面,输入密码后点击屏幕上"登录"按钮就可以实现界面跳转,但是一开始触发事件只能使用鼠标点击屏幕上的按钮才能触发这个按钮,我想到习惯性的登录动作是先用键盘输入密码,然后直接潇洒的重击一下回车键,又解压又有效!!! 我的解决思路: 要给这个"登录"的pushButton绑定键盘事件,首先想到的是利用setShortcut属性给pushButton设置一个快捷键,但是几经尝试发现setShortcut设置的快捷键好像都是Alt+某个字母这种,我总不能设置成Alt+enter

WJFLBJ的博客 5967

关于 让页面中的按钮 响应回车

在body 里面加上事件 onkeydown="keypress();"     让后 JavaScript 代码为   &lt;script&gt;     function keypress()         {             if(event.keyCode == 13)             {                  event.returnValue...

童大大的专栏 638

QPushButton 之 default、autoDefault 分析

QPushButton,很常见很简单的一个东西。可以今天还是被它的一个default属性弄晕了。QDialog中添加一个QDialogButtonBox,然后其中始终有一个button始终处于default状态,死活去不掉... 到底怎么了... 从头理理了,于是便有了本文

1+1=10 1万+
serving
博客等级 码龄19年 7粉丝 1原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值