PyQt5实现QLineEdit添加clicked信号的方法


Posted in Python onJune 25, 2019

大家都知道很多控件是没有clicked信号的,我在网上找了很多终于总结出2个方法来实现类似需求,比如给QLineEdit添加clicked信号,这样的话,当点击输入框时就会发送clicked信号,其它控件也是一样的做法,如下:

方法1:创建一个继承自QLineEdit的类,然后重写mousePressEvent。

class MyLineEdit(QLineEdit):
  clicked = pyqtSignal()
  def mouseReleaseEvent(self, QMouseEvent):
    if QMouseEvent.button()==Qt.LeftButton:
      self.clicked.emit()

方法2:重写eventFilter事件也可以达到类似的效果。

def eventFilter(self, widget, event):
  if widget == self.edit:
    if event.type() == QEvent.FocusOut:
      pass
    elif event.type() == QEvent.FocusIn:
      self.clicked.emit()   #当焦点再次落到edit输入框时,发送clicked信号出去
    else:
      pass
  return False

test.py

from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sys

#方法1
class mylineedit(QLineEdit):
  clicked=pyqtSignal()  #定义clicked信号
  def mouseReleaseEvent(self, QMouseEvent):
    if QMouseEvent.button()==Qt.LeftButton:
      self.clicked.emit()   #发送clicked信号

class Wind(QDialog):
  clicked=pyqtSignal()
  def __init__(self):
    super().__init__()
    self.lnd=mylineedit()
    self.edit=QLineEdit()
    self.edit.installEventFilter(self)  #方法2(1)

    vb=QVBoxLayout()
    vb.addWidget(self.lnd)
    vb.addWidget(self.edit)
    self.setLayout(vb)

    self.lnd.clicked.connect(self.showData)
    self.clicked.connect(self.showData)   #该clicked信号是W1的信号而非edit的信号,但可以实现焦点落到edit时触发信号

  # 方法2(2)
  def eventFilter(self, widget, event):
    if widget == self.edit:
      if event.type() == QEvent.FocusOut:
        pass
      elif event.type() == QEvent.FocusIn:
        self.clicked.emit()   #当焦点再次落到edit输入框时,发送clicked信号出去
      else:
        pass
    return False

  def showData(self):
    print('ok')

if __name__=="__main__":
  app=QApplication(sys.argv)
  w=Wind()
  w.show()
  sys.exit(app.exec_())

以上这篇PyQt5实现QLineEdit添加clicked信号的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python基础教程之字典操作详解
Mar 25 Python
Python 类的继承实例详解
Mar 25 Python
Python利用matplotlib生成图片背景及图例透明的效果
Apr 27 Python
python 实现上传图片并预览的3种方法(推荐)
Jul 14 Python
利用django如何解析用户上传的excel文件
Jul 24 Python
Numpy数组转置的两种实现方法
Apr 17 Python
详解Python字典的操作
Mar 04 Python
Python datetime和unix时间戳之间相互转换的讲解
Apr 01 Python
python写程序统计词频的方法
Jul 29 Python
利用rest framework搭建Django API过程解析
Aug 31 Python
Python编程快速上手——PDF文件操作案例分析
Feb 28 Python
Matplotlib自定义坐标轴刻度的实现示例
Jun 18 Python
pyqt5 键盘监听按下enter 就登陆的实例
Jun 25 #Python
PyQt5响应回车事件的方法
Jun 25 #Python
PyQt5 QTableView设置某一列不可编辑的方法
Jun 25 #Python
用python做游戏的细节详解
Jun 25 #Python
Python二进制文件读取并转换为浮点数详解
Jun 25 #Python
python print出共轭复数的方法详解
Jun 25 #Python
python安装pil库方法及代码
Jun 25 #Python
You might like
Excel数据导入Mysql数据库的实现代码
2008/06/05 PHP
PHP通过header实现文本文件下载的代码
2010/08/08 PHP
php强制运行广告的方法
2014/12/01 PHP
PHP中iconv函数知识汇总
2015/07/02 PHP
ThinkPHP路由机制简介
2016/03/23 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
Linux php 中文乱码的快速解决方法
2016/05/13 PHP
laravel框架 laravel-admin上传图片到oss的方法
2019/10/13 PHP
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
2010/05/13 Javascript
jQuery.extend 函数详解
2012/02/03 Javascript
用js代码改变单选框选中状态的简单实例
2013/12/18 Javascript
JavaScript中奇葩的假值示例应用
2014/03/11 Javascript
纯js实现无限空间大小的本地存储
2015/06/18 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
CSS3 3D 技术手把手教你玩转
2016/09/02 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
Python实现求最大公约数及判断素数的方法
2015/05/26 Python
浅谈python字符串方法的简单使用
2016/07/18 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
2017/12/14 Python
Python实现PS图像调整黑白效果示例
2018/01/25 Python
python面试题小结附答案实例代码
2019/04/11 Python
从训练好的tensorflow模型中打印训练变量实例
2020/01/20 Python
枚举和一组预处理的#define有什么不同
2016/09/21 面试题
网络编程中设计并发服务器,使用多进程与多线程,请问有什么区别?
2016/03/27 面试题
模具设计与制造专业应届生求职信
2013/10/18 职场文书
高校学生干部的自我评价分享
2013/11/04 职场文书
质量月活动策划方案
2014/03/10 职场文书
小学生演讲稿大全
2014/04/25 职场文书
森马旗舰店双十一营销方案
2014/09/29 职场文书
个人原因辞职信模板
2015/05/13 职场文书
民间借贷借条如何写
2015/05/26 职场文书
运动会宣传稿100字
2015/07/23 职场文书
《梅花魂》教学反思
2016/02/18 职场文书
vue+elementui 实现新增和修改共用一个弹框的完整代码
2021/06/08 Vue.js
python微信智能AI机器人实现多种支付方式
2022/04/12 Python
SpringBoot使用AOP实现统计全局接口访问次数详解
2022/06/16 Java/Android