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 相关文章推荐
在Django的模型和公用函数中使用惰性翻译对象
Jul 27 Python
Python模块结构与布局操作方法实例分析
Jul 24 Python
Python实现的弹球小游戏示例
Aug 01 Python
浅谈Django自定义模板标签template_tags的用处
Dec 20 Python
python OpenCV学习笔记直方图反向投影的实现
Feb 07 Python
PyCharm代码回滚,恢复历史版本的解决方法
Oct 22 Python
Python 实现王者荣耀中的敏感词过滤示例
Jan 21 Python
一个可以套路别人的python小程序实例代码
Apr 09 Python
Python Switch Case三种实现方法代码实例
Jun 18 Python
python实现AdaBoost算法的示例
Oct 03 Python
Selenium关闭INFO:CONSOLE提示的解决
Dec 07 Python
Python+SeaTable实现计算两个日期间的工作日天数
Jul 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循环检测目录是否存在并创建(循环创建目录)
2011/01/06 PHP
比较时间段一与时间段二是否有交集的php函数
2011/05/31 PHP
PHPEXCEL 使用小记
2013/01/06 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
destoon实现调用图文新闻的方法
2014/08/21 PHP
PHP内核探索之变量
2015/12/22 PHP
PHP实现的通过参数生成MYSQL语句类完整实例
2016/04/11 PHP
thinkPHP实现的联动菜单功能详解
2017/05/05 PHP
详解php语言最牛掰的Laravel框架
2017/11/20 PHP
jQuery 操作XML入门
2008/12/25 Javascript
jquery判断浏览器后退时候弹出消息的方法
2014/08/11 Javascript
JavaScript操作cookie类实例
2015/03/31 Javascript
前端面试知识点锦集(JavaScript篇)
2016/12/28 Javascript
基于 vue-skeleton-webpack-plugin 的骨架屏实战
2019/08/05 Javascript
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
2019/09/06 Javascript
WEEX环境搭建与入门详解
2019/10/16 Javascript
vue移动端使用appClound拉起支付宝支付的实现方法
2019/11/21 Javascript
Javascript中Math.max和Math.max.apply的区别和用法详解
2020/08/24 Javascript
JS如何生成动态列表
2020/09/22 Javascript
[05:10]2014DOTA2国际邀请赛 通往胜利之匙赛场探秘之旅
2014/07/18 DOTA
Python使用time模块实现指定时间触发器示例
2017/05/18 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
2019/06/24 Python
python实现点击按钮修改数据的方法
2019/07/17 Python
python调用支付宝支付接口流程
2019/08/15 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
2020/01/10 Python
python中前缀运算符 *和 **的用法示例详解
2020/05/28 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
2020/10/12 Python
Django数据模型中on_delete使用详解
2020/11/30 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
2021/02/07 Python
css图标制作教程制作云图标
2014/01/19 HTML / CSS
德国著名廉价网上药店:Shop-Apotheke
2017/07/23 全球购物
期末考试动员演讲稿
2014/01/10 职场文书
幼儿园运动会加油词
2014/02/14 职场文书
公安派出所所长四风问题个人对照检查材料
2014/10/04 职场文书
历史名人教你十五个读书方法,赶快Get起来!
2019/07/18 职场文书
Python开发简易五子棋小游戏
2022/05/02 Python