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的Django框架中生成CSV文件的方法
Jul 22 Python
详谈python3 numpy-loadtxt的编码问题
Apr 29 Python
Python生成器generator用法示例
Aug 10 Python
Python3网络爬虫中的requests高级用法详解
Jun 18 Python
Python生成一个迭代器的实操方法
Jun 18 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
Jan 14 Python
python 实现多维数组(array)排序
Feb 28 Python
spyder 在控制台(console)执行python文件,debug python程序方式
Apr 20 Python
Keras设置以及获取权重的实现
Jun 19 Python
Keras SGD 随机梯度下降优化器参数设置方式
Jun 19 Python
Python高并发和多线程有什么关系
Nov 14 Python
Python 实现PS滤镜中的径向模糊特效
Dec 03 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/05/21 PHP
PHP批量生成图片缩略图的方法
2015/06/18 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
2016/04/15 PHP
PHP MySql增删改查的简单实例
2016/06/21 PHP
基于jQuery的message插件实现右下角弹出消息框
2011/01/11 Javascript
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
用javascript作一个通用向导说明
2011/08/30 Javascript
jQuery图片的展开和收缩实现代码
2013/04/16 Javascript
解析jQuery与其它js(Prototype)库兼容共存
2013/07/04 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
JavaScript实现点击按钮直接打印
2016/01/06 Javascript
js从外部获取图片的实现方法
2016/08/05 Javascript
jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码
2016/12/27 Javascript
Angular将填入表单的数据渲染到表格的方法
2017/09/22 Javascript
swiper 解决动态加载数据滑动失效的问题
2018/02/26 Javascript
jQuery的Ajax接收java返回数据方法
2018/08/11 jQuery
解决angularjs中同步执行http请求的方法
2018/08/13 Javascript
小程序实现抽奖动画
2020/04/16 Javascript
ES6基础之展开语法(Spread syntax)
2019/02/21 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
2019/07/19 Javascript
layui实现下拉复选功能的例子(包括数据的回显与上传)
2019/09/24 Javascript
webpack安装配置与常见使用过程详解(结合vue)
2020/06/01 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
关于element-ui表单中限制输入纯数字的解决方式
2020/09/08 Javascript
Python3安装Pillow与PIL的方法
2019/04/03 Python
PowerBI和Python关于数据分析的对比
2019/07/11 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
Python tkinter实现图片标注功能(完整代码)
2019/12/08 Python
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
2016/11/16 HTML / CSS
EJB2和EJB3在架构上的不同点
2014/09/29 面试题
应届生新闻编辑求职信
2013/11/19 职场文书
献爱心倡议书
2014/04/14 职场文书
惊涛骇浪观后感
2015/06/05 职场文书
合作协议书格式范本
2016/03/21 职场文书
图解排序算法之希尔排序Java实现
2021/06/26 Java/Android
基于Pygame实现简单的贪吃蛇游戏
2021/12/06 Python