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

PyQt5中,editingFinished连接的槽函数中 QMessageBox 弹出两次

在 PyQt5 中,当 QLineEditeditingFinished 信号连接到一个槽函数,该槽函数弹出 QMessageBox 时,可能会出现对话框弹出两次的情况。这通常是由于 QMessageBox 会在弹出时改变焦点,触发 editingFinished 信号,再次调用槽函数。

解决方法

  1. 使用 textChanged 代替 editingFinished:
    如果可以,考虑使用 textChanged 信号代替 editingFinished 信号,避免焦点变化导致的重复触发。

    self.lineEdit.textChanged.connect(self.your_slot_function)
    
  2. 延迟触发 QMessageBox:
    通过使用 QTimer.singleShot 来延迟 QMessageBox 的弹出,避免在焦点变化时触发 editingFinished

    示例代码:

    def on_editing_finished(self):
        QTimer.singleShot(0, self.show_warning)
    
    def show_warning(self):
        QMessageBox.warning(self, '设置出错', '弹出错误提示', QMessageBox.Yes, QMessageBox.Yes)
    
  3. 使用标志位防止重复调用:
    可以在槽函数中使用标志位,防止在同一事件中多次调用 QMessageBox

    示例代码:

    def on_editing_finished(self):
        if hasattr(self, '_already_shown') and self._already_shown:
            return
    
        self._already_shown = True
        QTimer.singleShot(0, self.show_warning)
    
    def show_warning(self):
        QMessageBox.warning(self, '设置出错', '弹出错误提示', QMessageBox.Yes, QMessageBox.Yes)
        QTimer.singleShot(0, lambda: setattr(self, '_already_shown', False))
    

通过这些方法,你可以避免 QMessageBoxeditingFinished 信号触发时弹出两次的情况。


http://www.kler.cn/a/282009.html

相关文章:

  • RSA算法原理
  • Quartus+Nios II for eclipse问题合集
  • React--》如何高效管理前端环境变量:开发与生产环境配置详解
  • 基于YOLOv8深度学习的智慧课堂学生专注度检测系统(PyQt5界面+数据集+训练代码)
  • nfs服务器--RHCE
  • 基于python Django的boss直聘数据采集与分析预测系统,爬虫可以在线采集,实时动态显示爬取数据,预测基于技能匹配的预测模型
  • MagiskBoot编译解包打包boot.img
  • Linux系统使用Docker compose搭建开源文档系统Paperless-ngx
  • TS学习笔记
  • 【计算机网络】计算机网络的组成和功能
  • SpringBoot 项目——抽奖系统
  • webContextUnify的作用
  • mac安装java17(jdk17)
  • Netty+WebSocket实现高并发网络编程
  • 【Go - interface, 强类型语言中的任意类型 】
  • 【项目日记】高并发内存池---实现线程缓存
  • Linux学习记录(十三)----信号
  • 使用 JavaScript 实现图片上传
  • 视源CVTE嵌入式面试题及参考答案(200+面试题,17万字)
  • TCP vs UDP:揭秘可靠性与效率之争
  • Linux 软件包管理器yum 自动化构建工具-make/makefile
  • 游卡,三七互娱,得物,顺丰,快手,oppo,莉莉丝,康冠科技,途游游戏,埃科光电25秋招内推
  • PN结--
  • R 语言学习教程,从入门到精通,R 绘图饼图(23)
  • vector容器---性能优化
  • 人工智能算力FP32、FP16、TF32、BF16、混合精度解读