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之入门(二)基本数据类型
May 25 Python
Python引用模块和查找模块路径
Mar 17 Python
图文详解WinPE下安装Python
May 17 Python
python生成器,可迭代对象,迭代器区别和联系
Feb 04 Python
Python在图片中插入大量文字并且自动换行
Jan 02 Python
判断python对象是否可调用的三种方式及其区别详解
Jan 31 Python
django配置连接数据库及原生sql语句的使用方法
Mar 03 Python
Python时间和字符串转换操作实例分析
Mar 16 Python
django中forms组件的使用与注意
Jul 08 Python
pandas实现将日期转换成timestamp
Dec 07 Python
Python如何定义接口和抽象类
Jul 28 Python
Python 使用dict实现switch的操作
Apr 07 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
PHP 之 写时复制介绍(Copy On Write)
2014/05/13 PHP
php根据年月获取当月天数及日期数组的方法
2016/11/30 PHP
PHP面向对象之工作单元(实例讲解)
2017/06/26 PHP
javascript实现的listview效果
2007/04/28 Javascript
javascript 在firebug调试时用console.log的方法
2012/05/10 Javascript
javascript设计模式 封装和信息隐藏(上)
2012/07/24 Javascript
js string 转 int 注意的问题小结
2013/08/15 Javascript
javascript日期对象格式化为字符串的实现方法
2014/01/14 Javascript
JavaScript 动态加载脚本和样式的方法
2015/04/13 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
2015/08/11 Javascript
网页前端登录js按Enter回车键实现登陆的两种方法
2016/05/10 Javascript
AngularJS基础 ng-keyup 指令简单示例
2016/08/02 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
jQuery 常见小例汇总
2016/12/14 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
AngularJS中table表格基本操作示例
2017/10/10 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
2018/09/05 Javascript
JavaScript中引用vs复制示例详析
2018/12/06 Javascript
nodejs文件夹深层复制功能
2019/09/03 NodeJs
python实现绘制树枝简单示例
2014/07/24 Python
Python3搜索及替换文件中文本的方法
2015/05/22 Python
在Django的URLconf中使用多个视图前缀的方法
2015/07/18 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
Tensorflow安装问题: Could not find a version that satisfies the requirement tensorflow
2020/04/20 Python
Python读写csv文件流程及异常解决
2020/10/20 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
2020/12/07 Python
Html5 Geolocation获取地理位置信息实例
2016/12/09 HTML / CSS
萨克斯第五大道的折扣店:Saks Fifth Avenue OFF 5TH
2016/08/25 全球购物
Notino匈牙利:购买香水和化妆品
2019/04/12 全球购物
四种会话跟踪技术
2015/05/20 面试题
《蝙蝠和雷达》教学反思
2014/04/23 职场文书
公司董事长岗位职责
2014/06/08 职场文书
公司领导班子对照材料
2014/08/18 职场文书
小学生安全教育广播稿
2014/10/20 职场文书
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技