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中for循环的使用
Apr 14 Python
在Python中使用PIL模块处理图像的教程
Apr 29 Python
Python扫描IP段查看指定端口是否开放的方法
Jun 09 Python
Python实现简单的代理服务器
Jul 25 Python
Python制作刷网页流量工具
Apr 23 Python
python中闭包Closure函数作为返回值的方法示例
Dec 17 Python
python 随机森林算法及其优化详解
Jul 11 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
Aug 20 Python
pytorch 数据处理:定义自己的数据集合实例
Dec 31 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
Feb 29 Python
Django实现列表页商品数据返回教程
Apr 03 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
Jun 04 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中读写文件实现代码
2011/10/20 PHP
PHP清除数组中所有字符串两端空格的方法
2014/10/20 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
PHP 断点续传实例详解
2017/11/11 PHP
PHP crc32()函数讲解
2019/02/14 PHP
PHP创建XML接口示例
2019/07/04 PHP
Javascript中暂停功能的实现代码
2007/03/04 Javascript
映彩衣的js随笔(js图片切换效果)
2011/07/31 Javascript
关于eval 与new Function 到底该选哪个?
2013/04/17 Javascript
基于jQuery实现点击弹出层实例代码
2016/01/01 Javascript
JavaScript位移运算符(无符号) >>> 三个大于号 的使用方法详解
2016/03/31 Javascript
bootstrap布局中input输入框右侧图标点击功能
2016/05/16 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
jQuery实现用户信息表格的添加和删除功能
2017/09/12 jQuery
JS中promise化微信小程序api
2018/04/12 Javascript
微信小程序云函数使用mysql数据库过程详解
2019/08/07 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
2020/12/10 Javascript
详解node.js创建一个web服务器(Server)的详细步骤
2021/01/15 Javascript
[35:27]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第二场 10.29
2020/10/29 DOTA
Python Xml文件添加字节属性的方法
2018/03/31 Python
Django框架的使用教程路由请求响应的方法
2018/07/03 Python
Django web框架使用url path name详解
2019/04/29 Python
python字典的遍历3种方法详解
2019/08/10 Python
Tensorflow Summary用法学习笔记
2020/01/10 Python
Python class的继承方法代码实例
2020/02/14 Python
python3检查字典传入函数键是否齐全的实例
2020/06/05 Python
python3 kubernetes api的使用示例
2021/01/12 Python
类、抽象类、接口的差异
2016/06/13 面试题
汽车技术服务与贸易专业求职信
2014/07/20 职场文书
优秀教师先进个人事迹材料
2014/08/31 职场文书
2014公安机关纪律作风整顿思想汇报
2014/09/13 职场文书
农民工预备党员思想汇报
2014/09/14 职场文书
刘公岛导游词
2015/02/05 职场文书
销售经理岗位职责范本
2015/04/02 职场文书
解析redis hash应用场景和常用命令
2021/08/04 Redis
Python学习开发之图形用户界面详解
2021/08/23 Python