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多线程下载文件的方法
Jul 10 Python
获取python文件扩展名和文件名方法
Feb 02 Python
python使用json序列化datetime类型实例解析
Feb 11 Python
在Python中分别打印列表中的每一个元素方法
Nov 07 Python
Python简单过滤字母和数字的方法小结
Jan 09 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
May 23 Python
python绘制随机网络图形示例
Nov 21 Python
Python如何将函数值赋给变量
Apr 28 Python
Python字符串格式化f-string多种功能实现
May 07 Python
解决numpy矩阵相减出现的负值自动转正值的问题
Jun 03 Python
python的setattr函数实例用法
Dec 16 Python
python库sklearn常用操作
Aug 23 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数组
2006/10/09 PHP
php 按指定元素值去除数组元素的实现方法
2011/11/04 PHP
解决php表单重复提交实现方法
2015/09/29 PHP
php workerman定时任务的实现代码
2018/12/23 PHP
Swoole扩展的6种模式深入详解
2021/03/04 PHP
用js判断用户浏览器是否是XP SP2的IE6
2007/03/08 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
2012/12/27 Javascript
JavaScript onkeydown事件入门实例(键盘某个按键被按下)
2014/10/17 Javascript
javascript实现可键盘控制的抽奖系统
2016/03/10 Javascript
最简单纯JavaScript实现Tab标签页切换的方式(推荐)
2016/07/25 Javascript
Ubuntu系统下Angularjs开发环境安装
2016/09/01 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
2016/10/31 Javascript
NodeJS链接MySql数据库的操作方法
2017/06/27 NodeJs
引入JavaScript时alert弹出框显示中文乱码问题
2017/09/16 Javascript
vue2.0 + ele的循环表单及验证字段方法
2018/09/18 Javascript
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
JS数组方法slice()用法实例分析
2020/01/18 Javascript
vue学习笔记之slot插槽用法实例分析
2020/02/29 Javascript
[00:10]神之谴戒
2019/03/06 DOTA
python中使用mysql数据库详细介绍
2015/03/27 Python
python 筛选数据集中列中value长度大于20的数据集方法
2018/06/14 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
python 中关于pycharm选择运行环境的问题
2020/10/31 Python
PyTorch预训练Bert模型的示例
2020/11/17 Python
俄罗斯优惠券网站:BIGLION
2017/05/21 全球购物
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
廉价连衣裙和婚纱礼服在线销售:Tbdress
2019/02/28 全球购物
加拿大专业美发产品购物网站:Chatters
2021/02/28 全球购物
机电一体化自荐信
2013/12/10 职场文书
幸福家庭事迹材料
2014/02/03 职场文书
会计的岗位职责
2014/03/15 职场文书
教师产假请假条
2014/04/10 职场文书
列车乘务员工作不细心检讨书
2014/10/07 职场文书
2014年世界艾滋病日演讲稿
2014/11/28 职场文书
2015年大学生实习评语
2015/03/25 职场文书
PyCharm 配置SSH和SFTP连接远程服务器
2022/05/11 Python