我是靠谱客的博主 紧张小海豚,最近开发中收集的这篇文章主要介绍pyqt5 python qlineedit信号_PyQt5实现QLineEdit添加clicked信号的方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

3a2c5c47719654b2eb3ed26ac95e70d8.png

大家都知道很多控件是没有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信号的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

最后

以上就是紧张小海豚为你收集整理的pyqt5 python qlineedit信号_PyQt5实现QLineEdit添加clicked信号的方法的全部内容,希望文章能够帮你解决pyqt5 python qlineedit信号_PyQt5实现QLineEdit添加clicked信号的方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部