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人人网登录应用实例
Sep 26 Python
python实现将元祖转换成数组的方法
May 04 Python
python实现爬虫统计学校BBS男女比例(一)
Dec 31 Python
Python实现二叉搜索树
Feb 03 Python
详解Python中的相对导入和绝对导入
Jan 06 Python
vue.js实现输入框输入值内容实时响应变化示例
Jul 07 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
Mar 11 Python
python 实现查找文件并输出满足某一条件的数据项方法
Jun 12 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
Jul 17 Python
对Django项目中的ORM映射与模糊查询的使用详解
Jul 18 Python
使用pyshp包进行shapefile文件修改的例子
Dec 06 Python
python继承threading.Thread实现有返回值的子类实例
May 02 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代码审核的详细介绍
2013/06/13 PHP
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
帝国CMS留言板回复后发送EMAIL通知客户
2015/07/06 PHP
关于Laravel Route重定向的一个注意点
2017/01/16 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
页面只有一个text的时候,回车自动submit的解决方法
2010/08/12 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
2014/08/08 Javascript
js控制鼠标事件移动及移出效果显示
2014/10/19 Javascript
JS自定义对象实现Java中Map对象功能的方法
2015/01/20 Javascript
jQuery使用post方法提交数据实例
2015/03/25 Javascript
JQUERY简单按钮轮换选中效果实现方法
2015/05/07 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
AngularJS包括详解及示例代码
2016/08/17 Javascript
浅谈layer的iframe弹窗给里面的标签赋值的问题
2016/11/10 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
AngularJS学习第一篇 AngularJS基础知识
2017/02/13 Javascript
vue slot 在子组件中显示父组件传递的模板
2018/03/02 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
2018/12/09 Javascript
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
使用vscode快速建立vue模板过程详解
2019/10/10 Javascript
微信小程序如何加载数据库真实数据的实现
2020/03/04 Javascript
[02:06]DOTA2英雄基础教程 暗影萨满
2013/12/16 DOTA
python调用java的Webservice示例
2014/03/10 Python
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
Python简单生成随机姓名的方法示例
2017/12/27 Python
Python常见工厂函数用法示例
2018/03/21 Python
python Django里CSRF 对应策略详解
2019/08/05 Python
python中如何打包用户自定义模块
2020/09/23 Python
HTML5里autofocus自动聚焦属性使用介绍
2016/06/22 HTML / CSS
复古服装:RetroStage
2019/05/10 全球购物
学年自我鉴定范文
2013/10/01 职场文书
保安队长职务说明书
2014/02/23 职场文书
高校师德师风自我剖析材料
2014/09/29 职场文书
2016大一新生入学教育心得体会
2016/01/23 职场文书