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文件比较示例分享
Jan 10 Python
一则python3的简单爬虫代码
May 26 Python
python通过邮件服务器端口发送邮件的方法
Apr 30 Python
让Python代码更快运行的5种方法
Jun 21 Python
Python 爬虫学习笔记之正则表达式
Sep 21 Python
详解Python之数据序列化(json、pickle、shelve)
Mar 30 Python
matplotlib绘制动画代码示例
Jan 02 Python
python数据挖掘需要学的内容
Jun 23 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
Aug 12 Python
python os.path.isfile()因参数问题判断错误的解决
Nov 29 Python
python分别打包出32位和64位应用程序
Feb 18 Python
python实现调用摄像头并拍照发邮箱
Apr 27 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+mysql保存和输出文件
2006/10/09 PHP
PHP 服务器配置(使用Apache及IIS两种方法)
2009/06/01 PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
2016/08/23 PHP
PHP实现浏览器格式化显示XML的方法示例
2019/01/22 PHP
关于恒等于(===)和非恒等于(!==)
2007/08/20 Javascript
JavaScript 高级篇之函数 (四)
2012/04/07 Javascript
js判断上传文件的类型和大小示例代码
2013/10/18 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
jquery实现图片翻页效果
2013/12/23 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
JS来动态的修改url实现对url的增删查改
2014/09/05 Javascript
Javascript中的五种数据类型详解
2014/12/26 Javascript
Jquery api 速查表分享
2015/01/12 Javascript
jQuery图片特效插件Revealing实现拉伸放大
2015/04/22 Javascript
浅谈jQuery页面的滚动位置scrollTop、scrollLeft
2015/05/19 Javascript
jQuery左侧大图右侧小图焦点图幻灯切换代码分享
2015/08/19 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
2016/10/10 Javascript
通过bootstrap全面学习less
2016/11/09 Javascript
bootstrap Validator 模态框、jsp、表单验证 Ajax提交功能
2017/02/17 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
深入理解jquery的$.extend()、$.fn和$.fn.extend()
2017/07/08 jQuery
基于vue组件实现猜数字游戏
2020/05/28 Javascript
Python计算三维矢量幅度的方法
2015/06/15 Python
python 读取文件并把矩阵转成numpy的两种方法
2019/02/12 Python
python实现集中式的病毒扫描功能详解
2019/07/09 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
香奈儿美国官网:CHANEL美国
2020/05/20 全球购物
投标担保书范文
2014/04/02 职场文书
倡议书格式
2014/04/14 职场文书
代理人委托书
2014/09/16 职场文书
放假通知格式
2015/04/14 职场文书
幼儿园门卫安全责任书
2015/05/08 职场文书
入党积极分子群众意见
2015/06/01 职场文书
无工作证明怎么写
2015/06/15 职场文书
创业计划书之零食店(进口)
2019/09/24 职场文书
pytorch常用数据类型所占字节数对照表一览
2021/05/17 Python