PyQt5实现QLineEdit添加clicked信号的方法
作者:sylgdxsgx 发布时间:2021-02-08 18:24:02
标签:PyQt5,QLineEdit,clicked
大家都知道很多控件是没有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_())
来源:https://blog.csdn.net/sylgdxsgx/article/details/78517015


猜你喜欢
- #!/usr/local/python import os import time import string source=['/
- asp代码 <% Dim Rs,Conn Set Conn=Server.CreateObject("Adodb.Conne
- 浏览网页的时候经常会碰到一些不认识的英文单词,或者想知道一些中文单词的翻译,这时候再去找翻译软件或者翻译网站就有些麻烦了。因此我做了一个“中
- 目录技术背景打格点算法实现打格点算法加速总结概要技术背景在数学和物理学领域,总是充满了各种连续的函数模型。而当我们用现代计算机的技术去处理这
- CSS Sprites技术不新鲜,早在2005年 CSS Zengarden 的园主 Dave Shea 就在 ALA
- 如果你在写文章或者 Demo,为了简单,你当然可以用事件监听函数,以及那些事件对象提供的方法等。但在实际中,有一些方法和属性是有兼容性问题的
- 学会了FSO提取文件值,也学会了将信息输入到文件中,那下面就再来应用应用下。不知道你有没有这样的习惯:看到一个文件,不自觉的右键选择用记事本
- 如今,基本每个网站都会需要到Tab切换展示内容的滑动门效果应用,这种效果可以在更少的页面空间内,展示更多的网站内容,节约空间,方便用户集中操
- enumerate函数用于遍历序列中的元素以及它们的下标。enumerate函数说明:enumerate()是python的内置函数enum
- 对于一些快速迭代的产品来说,特别是移动端 C端产品,基于用户运营的目的,在 app首页给用户展示各种各样的弹窗是很常见的事情,在产品初期,由
- Python的环境变量环境变量说明PYTHONSTARTUP在交互式启动时执行的文件(无默认值)PYTHONPATH‘:' - 以默
- 本文实例讲述了python使用xlrd实现检索excel中某列含有指定字符串记录的方法。分享给大家供大家参考。具体分析如下:这里利用xlrd
- python代码如下:import webbrowser as wbimport foliumif __name__ == '__m
- 本文实例讲述了Vue 实现从小到大的横向滑动效果。分享给大家供大家参考,具体如下:最近项目中遇到一个需求,需要实现横向滑动,并且在滑动过程中
- 引言通常,您可能希望在 Pandas DataFrame 中插入一个新列。幸运的是,使用 pandas insert()函数很容易做到这一点
- 接口测试中,上传文件的测试场景非常常见。例如:上传头像(图片)、上传文件、上传视频等。下面以一个上传图片的例子为大家讲解如何通过 pytho
- 1.什么是连接查询:在实际开发中大部分都不是从一张表中查询数据,一般都是多张表联合查询取得结果。实际开发中,一般一个业务对应多张表。比如:学
- 前言本文大概内容:例如:随着ElementUI前后端交互的技术的更新,用户的的体验越来越好。本文主要针对用户在保持原页面结构,再添加另一个页
- 前期准备qrcode下载地址:qrcode · PyPIQR Code image generatorhttps://pypi.org/pr
- pycharm报错提示:无法加载文件\venv\Scripts\activate.ps1,因为在此系统上禁止运行脚本在pycharm终端出现