2013-05-17 3 views
4

일부 QGraphicItem을 다른 QGraphicsItemGroups 사이에서 이동할 수있는 PyQt QGraphicsView 프로젝트를 작성 중입니다. 이를 위해, "새로운"부모 itemGroup의 addItemToGroup() 메소드를 사용합니다.itemchange()가 정의 된 경우 항목 그룹에 항목을 추가 할 수 없습니다. (PyQt)

잘 작동하지만 사용자 정의 하위 항목 클래스에서 itemChange() 메서드를 정의하지 않는 한. 일단 그 메소드를 정의하면 (비록 내가 수퍼 클래스에 함수 호출을 전달하더라도), 내가 시도한 것에 상관없이 childItems는 ItemGroups에 추가되지 않을 것이다.

class MyChildItem(QtGui.QGraphicsItemGroup): 
    def itemChange(self, change, value): 
     # TODO: Do something for certain cases of ItemPositionChange 
     return QtGui.QGraphicsItemGroup.itemChange(self, change, value) 
     #return super().itemChange(change, value) # Tried this variation too 
     #return value # Tried this too, should work according to QT doc 

암 제대로 파이썬에서 슈퍼 클래스의 메소드를 호출하거나 문제가 QT/PyQt는 마법에 어딘가에 대한 단순히 너무 바보?

은 내가 똑같은 문제가 있었다 PyQt는 4.8 QT (5)

답변

2

파이썬 3.3을 사용합니다. 어쩌면 이것 : http://www.mail-archive.com/[email protected]/msg27457.html가 귀하의 질문 중 일부에 대한 답변입니까? 우리가 PyQt4에서 운이 좋지 않은 것처럼 보입니다.

업데이트 :

import sip 

def itemChange(self, change, value): 
     # do stuff here... 
     result = super(TestItem, self).itemChange(change, value) 
     if isinstance(result, QtGui.QGraphicsItem): 
      result = sip.cast(result, QtGui.QGraphicsItem) 
     return result 

여기에서 촬영 : 사실, 단지 해결 방법을 찾을 http://www.mail-archive.com/[email protected]/msg26190.html

어쩌면

없는 가장 우아하고 일반적인 솔루션을하지만, 여기 요, 그것을 작동합니다 - 난 QGraphicItems를 QGraphicItemGroups에 다시 추가 할 수 있습니다.

+0

안녕하세요 헨리, 답변과 노력에 감사드립니다. 유감스럽게도 유용한 메일 링리스트는 2013 년 8 월부터 PyQT가 이미 완료되었으므로 (문제가있는 상황을 피하기 위해 추악한 해결 방법 사용) 유용합니다. 어쨌든 솔루션이 도움이되었는지 여부를 확인하기 위해 오래된 물건을 다시 실행하려고 시도합니다. 다시 공유해 주셔서 감사합니다. –