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之有容乃大的list(2)
Sep 15 Python
python使用super()出现错误解决办法
Aug 14 Python
Queue 实现生产者消费者模型(实例讲解)
Nov 13 Python
Python实现基于C/S架构的聊天室功能详解
Jul 07 Python
python如何给字典的键对应的值为字典项的字典赋值
Jul 05 Python
简单了解python代码优化小技巧
Jul 08 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
Aug 12 Python
python3 Scrapy爬虫框架ip代理配置的方法
Jan 17 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
Feb 27 Python
Spark处理数据排序问题如何避免OOM
May 21 Python
Python网络爬虫四大选择器用法原理总结
Jun 01 Python
Python基础之变量的相关知识总结
Jun 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
Phpbean路由转发的php代码
2008/01/10 PHP
php5 pdo新改动加载注意事项
2008/09/11 PHP
PHP CKEditor 上传图片实现代码
2009/11/06 PHP
CURL状态码列表(详细)
2013/06/27 PHP
php获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
PHP实现的curl批量请求操作示例
2018/06/06 PHP
动态加载js文件 document.createElement
2006/10/14 Javascript
jquery统计用户选中的复选框的个数
2014/06/06 Javascript
js数组的操作指南
2014/12/28 Javascript
基于Jquery easyui 选中特定的tab
2015/11/17 Javascript
jQuery实现Select左右复制移动内容
2016/08/05 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
node.js中EJS 模板快速入门教程
2017/05/08 Javascript
在AngularJs中设置请求头信息(headers)的方法及不同方法的比较
2018/09/04 Javascript
NodeJS使用Range请求实现下载功能的方法示例
2018/10/12 NodeJs
Vue使用lodop实现打印小结
2019/07/06 Javascript
vue实现element表格里表头信息提示功能(推荐)
2019/11/20 Javascript
Pandas读写CSV文件的方法示例
2019/03/27 Python
python 一个figure上显示多个图像的实例
2019/07/08 Python
Django应用程序入口WSGIHandler源码解析
2019/08/05 Python
基于 Django 的手机管理系统实现过程详解
2019/08/16 Python
解决django后台管理界面添加中文内容乱码问题
2019/11/15 Python
如何定义TensorFlow输入节点
2020/01/23 Python
Python+PyQt5+MySQL实现天气管理系统
2020/06/16 Python
如何完美的建立一个python项目
2020/10/09 Python
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
2013/01/09 HTML / CSS
如何保障Web服务器安全
2014/05/05 面试题
十八大报告观后感
2014/01/28 职场文书
欢送退休感言
2014/02/08 职场文书
劳动工资科岗位职责范本
2014/03/02 职场文书
家长会主持词开场白
2014/03/18 职场文书
产品开发计划书
2014/04/27 职场文书
离婚代理词范文
2015/05/23 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书
PostGIS的安装与入门使用指南
2022/01/18 PostgreSQL
美元符号 $
2022/02/17 杂记