PyQt5實現(xiàn)QLineEdit添加clicked信號的方法
大家都知道很多控件是沒有clicked信號的,我在網(wǎng)上找了很多終于總結出2個方法來實現(xiàn)類似需求,比如給QLineEdit添加clicked信號,這樣的話,當點擊輸入框時就會發(fā)送clicked信號,其它控件也是一樣的做法,如下:
方法1:創(chuàng)建一個繼承自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輸入框時,發(fā)送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() #發(fā)送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的信號,但可以實現(xiàn)焦點落到edit時觸發(fā)信號 # 方法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輸入框時,發(fā)送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實現(xiàn)QLineEdit添加clicked信號的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
python實現(xiàn)在函數(shù)圖像上添加文字和標注的方法
今天小編就為大家分享一篇python實現(xiàn)在函數(shù)圖像上添加文字和標注的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07Paddle模型性能分析工具Profiler定位瓶頸點優(yōu)化程序詳解
這篇文章主要為大家介紹了Paddle模型性能分析工具Profiler定位瓶頸點優(yōu)化程序詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03Python開發(fā)如何在ubuntu 15.10 上配置vim
這篇文章主要介紹了Python開發(fā)如何在ubuntu 15.10 上配置vim 的相關資料,需要的朋友可以參考下2016-01-01Python3使用requests包抓取并保存網(wǎng)頁源碼的方法
這篇文章主要介紹了Python3使用requests包抓取并保存網(wǎng)頁源碼的方法,實例分析了Python3環(huán)境下requests模塊的相關使用技巧,需要的朋友可以參考下2016-03-03