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 多线程应用介绍
Dec 19 Python
python实现获取客户机上指定文件并传输到服务器的方法
Mar 16 Python
python实现点击按钮修改数据的方法
Jul 17 Python
Python Django简单实现session登录注销过程详解
Aug 06 Python
画pytorch模型图,以及参数计算的方法
Aug 17 Python
TensorFlow 多元函数的极值实例
Feb 10 Python
解决python-docx打包之后找不到default.docx的问题
Feb 13 Python
python Django 反向访问器的外键冲突解决
May 20 Python
python3的pip路径在哪
Jun 23 Python
Python 没有main函数的原因
Jul 10 Python
python中实现栈的三种方法
Dec 19 Python
pytorch常用数据类型所占字节数对照表一览
May 17 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
JAVA/JSP学习系列之二
2006/10/09 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
Linux系统下php获得系统分区信息的方法
2015/03/30 PHP
如何在PHP中生成随机数
2020/06/04 PHP
js身份证验证超强脚本
2008/10/26 Javascript
优化javascript的执行速度
2010/01/23 Javascript
Whatever:hover 无需javascript让IE支持丰富伪类
2010/06/29 Javascript
js对数字的格式化使用说明
2011/01/12 Javascript
如何解决Jquery库及其他库之间的$命名冲突
2013/09/15 Javascript
js从10种颜色中随机取色实现每次取出不同的颜色
2013/10/23 Javascript
JS实现的一个简单的Autocomplete自动完成例子
2014/04/16 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
2014/06/15 Javascript
Jquery 全选反选实例代码
2015/11/19 Javascript
通过点击jqgrid表格弹出需要的表格数据
2015/12/02 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
2016/01/04 Javascript
DeviceOne 让你一见钟情的App快速开发平台
2016/02/17 Javascript
判断数组是否包含某个元素的js函数实现方法
2016/05/19 Javascript
JavaScript随机生成颜色的方法
2016/10/15 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
将angular-ui的分页组件封装成指令的方法详解
2017/05/10 Javascript
webpack4简单入门实例
2018/09/06 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
2018/12/03 Javascript
node和vue实现商城用户地址模块
2018/12/05 Javascript
vue Tab切换以及缓存页面处理的几种方式
2019/11/05 Javascript
javascript全局自定义鼠标右键菜单
2020/12/08 Javascript
python使用reportlab画图示例(含中文汉字)
2013/12/03 Python
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
python将list转为matrix的方法
2018/12/12 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
2020/03/06 Python
英文自荐信
2013/12/19 职场文书
承诺书范文
2014/06/03 职场文书
党校学习心得体会范文
2014/09/09 职场文书
实习介绍信范文
2015/05/05 职场文书
2016年幼儿园万圣节活动总结
2016/04/05 职场文书
MySQL 1130异常,无法远程登录解决方案详解
2021/08/23 MySQL