PyQt 5 вызывает функцию без нажатия на python - PullRequest
0 голосов
/ 11 сентября 2018

Привет, ребята, я новичок в Python и PyQt, я уже использую PyQt 5 lib и уже столкнулся с действительно первичной проблемой.

Я хочу вызвать функцию печати (или любую другую функцию, подобную этой), просто перемещая курсор, не нажимая на это.

что-то вроде подсказок, которые не нужно нажимать на любую кнопку. Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 11 сентября 2018

Существует несколько способов реализации:

1. настраиваемая кнопка.

from PyQt5 import QtCore, QtWidgets


class HoverButton(QtWidgets.QPushButton):
    hovered = QtCore.pyqtSignal()

    def enterEvent(self, event):
        self.hovered.emit()
        super(HoverButton, self).enterEvent(event)


class Widget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(Widget, self).__init__(parent)

        lay = QtWidgets.QVBoxLayout(self)

        btn = HoverButton("Press me")
        btn.hovered.connect(self.onHovered)

        lay.addWidget(btn)
        lay.addWidget(QtWidgets.QLineEdit())

    def onHovered(self):
        print("hovered")


if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

2. eventFilter

from PyQt5 import QtCore, QtWidgets


class Widget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(Widget, self).__init__(parent)

        lay = QtWidgets.QVBoxLayout(self)

        self.btn = QtWidgets.QPushButton("Press me")
        self.btn.installEventFilter(self)

        lay.addWidget(self.btn)
        lay.addWidget(QtWidgets.QLineEdit())

    def eventFilter(self, obj, event):
        if obj == self.btn and event.type() == QtCore.QEvent.HoverEnter:
            self.onHovered()
        return super(Widget, self).eventFilter(obj, event)

    def onHovered(self):
        print("hovered")


if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...