2011-11-04 4 views
4

저는 지금 당분간이 작업을 해왔고 잘못된 것을 파악하지 못했습니다. 여기있는 누군가가 도울 수 있기를 바랍니다.pyQt Svg 이미지가 포함 된 호버크 이벤트

QGraphicsScene에있는 Svg 항목 위에 마우스를 가져 가면 호버 이벤트가 작동하려고합니다. 여기 내가 가지고 놀던 코드가 있습니다.

#!/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() 

누군가 도움을 줄 수 있기를 바랍니다.

답변

3

MySvg의 호버 이벤트를 모니터링하고 있지만 MySvg의 인스턴스 (MySvg.image) 인보기에 다른 QGraphicsSvgItem을 추가하고 있습니다. 귀하의 MySvg은 (는)보기에조차 없습니다. 다음과 같이 시도하십시오.

#!/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() 
+0

고맙습니다. 이렇게하면 더 많은 질문을 해결할 수 있습니다. – Jeff

관련 문제