python - creator - evento PyQt Hover con imagen Svg
qt biblioteca (1)
Está supervisando eventos de MySvg
para MySvg
pero está agregando otro QGraphicsSvgItem
a la vista que es solo una instancia ( MySvg.image
) en MySvg
. Su MySvg
ni siquiera está en la vista. Pruebe de esta manera:
#!/usr/bin/python
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtSvg import *
class Main(QWidget):
def __init__(self):
super(Main, self).__init__()
hbox = QHBoxLayout()
self.setLayout(hbox)
self.view = MyView(self)
self.scene = QGraphicsScene()
self.view.setScene(self.scene)
hbox.addWidget(self.view)
class MyView(QGraphicsView):
def __init__(self, parent):
super(MyView, self).__init__(parent)
self.parent = parent
def mousePressEvent(self, event):
super(MyView, self).mousePressEvent(event)
test = MySvg()
self.parent.scene.addItem(test)
class MySvg(QGraphicsSvgItem):
def __init__(self):
super(MySvg, self).__init__(''ubuntu.svg'')
self.setFlags(QGraphicsItem.ItemIsSelectable|
QGraphicsItem.ItemIsMovable)
self.setAcceptsHoverEvents(True)
def hoverEnterEvent(self, event):
print ''Enter''
def hoverLeaveEvent(self, event):
print ''Leave''
def hoverMoveEvent(self, event):
print ''Moving''
def runMain():
app = QApplication(sys.argv)
ex = Main()
ex.show()
sys.exit(app.exec_())
if __name__ == ''__main__'':
runMain()
He estado trabajando en esto desde hace un tiempo y no puedo entender lo que estoy haciendo mal. Espero que alguien aquí pueda ayudar.
Intento que funcionen los eventos de desplazamiento cuando paso el mouse sobre un elemento Svg que está en un QGraphicsScene. Aquí está el código con el que he estado jugando.
#!/usr/bin/python
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtSvg import *
class Main(QWidget):
def __init__(self):
super(Main, self).__init__()
hbox = QHBoxLayout()
self.setLayout(hbox)
self.view = MyView(self)
self.scene = QGraphicsScene()
self.view.setScene(self.scene)
hbox.addWidget(self.view)
class MyView(QGraphicsView):
def __init__(self, parent):
super(MyView, self).__init__(parent)
self.parent = parent
def mousePressEvent(self, event):
super(MyView, self).mousePressEvent(event)
test = MySvg()
self.parent.scene.addItem(test.image)
class MySvg(QGraphicsSvgItem):
def __init__(self):
super(MySvg, self).__init__()
self.image = QGraphicsSvgItem(''ubuntu.svg'')
self.image.setFlags(QGraphicsItem.ItemIsSelectable|
QGraphicsItem.ItemIsMovable)
self.setAcceptsHoverEvents(True)
def hoverEnterEvent(self, event):
print ''Enter''
def hoverLeaveEvent(self, event):
print ''Leave''
def hoverMoveEvent(self, event):
print ''Moving''
def runMain():
app = QApplication(sys.argv)
ex = Main()
ex.show()
sys.exit(app.exec_())
if __name__ == ''__main__'':
runMain()
Espero que alguien pueda ayudar.