有没有办法用 PyQt5 捕捉按钮上的悬停事件信号? [复制]

Posted

技术标签:

【中文标题】有没有办法用 PyQt5 捕捉按钮上的悬停事件信号? [复制]【英文标题】:Is there any way to catch a hover event signal on a button with PyQt5? [duplicate] 【发布时间】:2021-01-20 12:13:29 【问题描述】:

我知道之前有人问过这个几乎完全相同的问题 (How to Catch Hover and Mouse Leave Signal In PyQt5)

但我并不真正了解如何或在何处实现它,我只是需要澄清一下。

【问题讨论】:

您能说明一下您需要什么说明吗?链接的帖子已经清楚地解释了它是如何工作的:您创建一个小部件的子类并实现这两种方法。你有什么不明白的? 【参考方案1】:

基本上,用户所做的是他创建了第二个名为 button 的类,他用它来创建一个按钮。例如,这是代码:

class Button(QPushButton):

    def __init__(self, parent=None):
        super(Button, self).__init__(parent)
        # other initializations...

    def enterEvent(self, QEvent):
        print("enter")
        pass

    def leaveEvent(self, QEvent):
        print("leave")
        pass

现在,为了用这个类创建一个按钮,我们需要做的就是像这样调用这个类:

self.buttn = Button(self)

这将使用前一个类创建一个按钮。因此,这就是整个代码的样子:

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
import PyQt5.QtGui
from PyQt5.QtCore import QEvent
import sys

class Button(QPushButton):

    def __init__(self, parent=None):
        super(Button, self).__init__(parent)
        # other initializations...

    def enterEvent(self, QEvent):
        print("enter")
        pass

    def leaveEvent(self, QEvent):
        print("leave")
        pass

class Main(QWidget):
    def __init__(self):
        super(Main,self).__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle("Button")
        self.setGeometry(400,400,300,260)
        self.buttn = Button(self)
        self.buttn.setText("Button")          #text
        self.buttn.clicked.connect(self.close)
        self.buttn.move(100,100)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Main()
    ex.show()
    sys.exit(app.exec_()) 

【讨论】:

以上是关于有没有办法用 PyQt5 捕捉按钮上的悬停事件信号? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

发布事件处理程序?

如何在 PyQt5 中捕获 QTableWidget 上的左右鼠标单击事件?

PyQt5 按钮动画

有没有办法从 CAF 接收器上的 shaka 播放器捕获时间线区域输入事件?

如果禁用,则在悬停路由器按钮时禁用指针事件

仍在应用移动设备悬停状态上元素上的onClick事件