Foros Python

Versión completa: Problema al implementar mouseMoveEvent en QGraphicsRectItem
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenas noches, Al ejecutar el código, no logro hacer que se ejecute el evento mouseMoveEvent.  Se dibuja el rectángulo, si hago clic con el botón derecho, se ejecuta el "contextmenuEvent", pero en ningún momento se ejecuta el "mouseMoveEvent", en donde estoy fallando.
Michas gracias


from pruebas.Pantalla import Pantalla

pantalla = Pantalla()
uno = 1
pantalla.get_pantalla(uno)



pantalla.py

import sys

from PyQt5 import QtWidgets, QtCore, QtGui

class Pantalla(QtWidgets.QGraphicsScene):

    def __init__(self):
        self.n = 0

    @staticmethod
    def get_pantalla(uno):
        app = QtWidgets.QApplication(sys.argv)
        scene = QtWidgets.QGraphicsScene()
        view = QtWidgets.QGraphicsView(scene)
        view.resize(640, 480)

        it_rect = MyRectButton(QtCore.QRectF(0, 0, 100, 100), 50)
        scene.addItem(it_rect)

        view.show()
        print("UNO" + str(uno))
        sys.exit(app.exec_())

    def mouseMoveEvent(self, event):
        print("Evento mouseMoveEvent")


class MyRectButton(QtWidgets.QGraphicsRectItem):
    def __init__(self, rect, x):
        super(MyRectButton, self).__init__(rect)
        self.x = x
        print("XX: " + str(self.x))

    def contextMenuEvent(self, event):
        print("contextMenuEvent")
        print("X: " + str(self.x))

    def mouseMoveEvent(self, event):
        print("mouseMoveEvent")
        #print(self.altura)
Hola, bienvenido.

Me parece que el evento que estás buscando es hoverMouseEvent, que es invocado cuando el mouse pasa por encima de tu gráfico. Para habilitarlo, primero tenés que llamar a setAcceptHoverEvents():

Código:
class MyRectButton(QtWidgets.QGraphicsRectItem):
    def __init__(self, rect, x):
        super(MyRectButton, self).__init__(rect)
        self.x = x
        print("XX: " + str(self.x))
        self.setAcceptHoverEvents(True)

    def contextMenuEvent(self, event):
        print("contextMenuEvent")
        print("X: " + str(self.x))

    def hoverMoveEvent(self, event):
        print("hoverMoveEvent")
        #print(self.altura)

Saludos