2013-08-10 7 views
0

나는 메트로 (Windows 8) 스타일의 파이썬 데스크탑 응용 프로그램을 가지고 있기 때문에 어떤 것을하기 위해 클릭 할 수있는 사각형의 테이블을 가지고있다.PySide metro style mousepressevent

는이 같은 사각형 (MyIcon)의 테이블 생성 :

for sub_rectx in xrange(4): 
    for sub_recty in xrange(3): 
     tmp = MyIcon(sub_rectx*322, sub_recty*192, 300, 170, sub_recty+3*sub_rectx + 1, parent=parent) 

을 나는 기본적으로 ID를 가진 직사각형 내 클래스가 있습니다

class MyIcon(MyPanel): 
    def __init__(self, x, y, width, height, ide, parent=None): 
     super(MyPanel, self).__init__(parent) 
     QtGui.QGraphicsRectItem.__init__(self, x, y, width, height, parent) 
     self.ide = ide 

    def mousePressEvent(self, event): 
     self.setBrush(QtGui.QColor(255, 255, 255)) 
     print self.ide 

이 코드는 좋은 작품을 처음에 직사각형을 클릭하고 올바른 ID를 인쇄하고 올바른 직사각형의 색상을 변경했지만 다음 번에 내가 클릭 한 첫 번째 직사각형의 ID를 항상 인쇄하고있는 사각형을 클릭하면 색상이 변경되지 않습니다. 그것이 다시 같은 직사각형을 그리기 때문에 가정해라. gle도).

아무도 도와 줄 수 있습니까? 당신이 최고 (..)를 호출 할 때 첫 번째 매개 변수 (MyIcon하지 MyPanel)와 같은 현재의 클래스를 통과해야

1) :

답변

0

나는 두 가지 문제를 참조하십시오. 적절한 매개 변수를 전달하고 QGraphicsRectItem의 초기화 함수를 호출하지 마십시오 (부모 클래스가 해당 함수를 사용합니다). 마우스 이벤트 핸들러에서

2), 당신도 슈퍼 함수를 ​​호출해야합니다 :

super(MyIcon, self).mousePressEvent(event)

이 문제를 해결해야한다.