当前位置: 首页 > 编程笔记 >

PyQt5实现QLineEdit添加clicked信号的方法

梁德馨
2023-03-14
本文向大家介绍PyQt5实现QLineEdit添加clicked信号的方法,包括了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_())

以上这篇PyQt5实现QLineEdit添加clicked信号的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍pyqt5自定义信号实例解析,包括了pyqt5自定义信号实例解析的使用技巧和注意事项,需要的朋友参考一下 本文研究的主要是pyqt5自定义信号实例解析的相关内容,具体介绍如下。 PyQt5已经自动定义了很多QT内建的信号。但是在实际的使用中为了灵活使用信号与槽机制,我们可以根据需要自定义signal。可以使用pyqtSignal()方法定义新的信号,新的信号作为类的属性。 自定义si

  • 本文向大家介绍在pyqt5中QLineEdit里面的内容回车发送的实例,包括了在pyqt5中QLineEdit里面的内容回车发送的实例的使用技巧和注意事项,需要的朋友参考一下 在PyQt5中QLineEdit里面的内容回车发送的方法是和PyQt4中不同的,主要是信号槽的写法的改变导致的。 具体不同如下: 在PyQt4中,我们要进行回车发送的时候,一般这么写: 但是在PyQt5中,写法有所改变,一般

  • 本文向大家介绍mysql添加备注信息的实现,包括了mysql添加备注信息的实现的使用技巧和注意事项,需要的朋友参考一下 前言 这连天有人问我一些mysql的备注信息,不得已还是写一遍博客吧 1、创建表的时候,添加表名备注和字段备注 2、表创建完成添加表名备注和字段备注 3、查看备注信息 到此这篇关于mysql添加备注信息的实现的文章就介绍到这了,更多相关mysql添加备注信息内容请搜索呐喊教程以前

  • 本文向大家介绍pyqt5实现按钮添加背景图片以及背景图片的切换方法,包括了pyqt5实现按钮添加背景图片以及背景图片的切换方法的使用技巧和注意事项,需要的朋友参考一下 简介 对与控件QPushButton中的可以使用setStyleSheet设置它背景图片。具体设置背景图片的方法有两种 然而对于这种方法背景图片无法进行边框的自适应,可以使用下面的方法 可以做到自适应边框。 代码 代码里面有两个图片

  • 问题内容: 我有一个关于django的问题。 我这里有许多对多模型 对于创建的1个购物车对象,我可以插入尽可能多的新TransactionDetail对象(产品和金额)。我的问题是。如何实现触发器?我想要的是每当创建交易明细时,我希望产品的存货数量减去交易明细中的数量。 我已经阅读了有关post_save()的信息,但不确定如何实现。也许像这样 什么时候: 问题答案: 如果你真的想使用信号来实现这

  • QLineEdit对象是最常用的输入字段。 它提供了一个框,其中可以输入一行文本。 要输入多行文本,需要QTextEdit对象。 下表列出了QLineEdit类的几个重要方法 - 以下是QLineEdit最常用的方法。 Sr.No. 方法和描述 1 setAlignment() 根据对齐常量对齐文本 Qt.AlignLeft Qt.AlignRight Qt.AlignCenter Qt.Alig