Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Problema al implementar mouseMoveEvent en QGraphicsRectItem
#1
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)
Responder
#2
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
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)