PowerShape는 캔버스에 그려진 그래픽 오브젝트를 말합니다. 캔버스에 표현된 각각의 그래픽 개체는 이름을 가지며 스크립트를 이용해 그래픽 개체의 속성을 설정 할 수 있습니다.


 파워씬에서 제공하는 그래픽 아이템의 종류는 다음과 같습니다.


  • 사각형
  • 다각형
  • 연결선
  • 파이
  • 아크
  • 이미지
  • SVG 이미지
  • GIF 이미지
  • 게이지
  • 트랜드 위젯
  • 게이지 바
  • 멀티칼라 표현개체(파이 챠트, 비율 바)
  • 위젯 - 누름버튼 , 콤보 박스 , 체크 박스, 트리위젯 , 날짜/시간 선택 위젯 , 그리드 위젯


 


 


 일반적으로 그래픽 아이템은 그래픽 편집기(PowerScene Studio)를 통해 아이템 별 속성 값을 변경할 수 있습니다. 하지만 시스템이 실행 중 동적으로 속성을 변경하기 위해서는 사용자가 스크립트를 입력하여 속성 값을 변경할 수 있습니다.

 

<위젯>


 위와 같은 위젯의 경우 속성이나 이벤트를 받기 위해서는 스크립트를 통해서만 접근 가능합니다. PowerShape를 사용하기 위해서는 canvas 개체의 getObject 함수를 통해 그래픽 개체의 이름으로 개체를 얻어 사용합니다.


 사용 예) 

obj = canvas.getObject('PowerShape name')

obj.setProperty('FaceText', '입력한 문자열로 변경')

widgetObj = canvas.getObject('widget name')


 그래픽 개체는 개체 별로 고유의 함수를 호출하거나 개체의 속성 값을 변경해 그래픽 개체를 설정 합니다. 모든 그래픽 개체에서 공통적으로 지원하는 함수는 다음과 같습니다.

Methods


리턴 값

함 수

설 명

str

getObjectID()

개체의 ID를 읽어 옵니다.


setPos( x, y )

개체의 위치를 x, y 좌표를 이용해 설정합니다.

variant

getProperty( propertyName )

개체의 속성 값을 읽어 옵니다.


setProperty( propertyName, value )

개체의 속성을 변경 합니다.


addEventAction( actionName, handler )

개체에 이벤트 스크립트를 등록 합니다.



 

  str getObjectID()

 

 개체의 ID를 읽어 옵니다.


 예)

obj =  canvas.getObject('Rect1')

id = obj.getObjectID()

print id



 

  setPos( x:x좌표, y:y좌표 )


 개체의 위치를 x,y 좌표를 이용해 설정합니다


 예)

obj =  canvas.getObject('Rect1')

obj.setPos(30.1 , 40 )



 

  variant  getProperty( property:속성 명 )

 

 그래픽 개체의 속성 값을 얻어옵니다


 예)

obj =  canvas.getObject('Rect1')

#개체 넓이 읽기

width = obj.getProperty('Width')  



 

  setProperty( property:속성 명, value:값 )

 

 그래픽 개체의 속성을 설정 합니다.


 예)

obj =  canvas.getObject('Rect1')

#개체의 선색을 붉은 색으로 변경

obj.setProperty('PenColor' , QColor(255,0,0,0 )  )  



 

  addEventAction( actionName, handler )

 

 그래픽 개체에 이벤트 액션을 동적으로 등록 합니다.


 actionName은 이벤트 종류를 말하며 다음과 같은 인자로 사용할 수 있습니다.

     

  • 'mouserelease' : 마우스 누름 해제시
  • 'mousepress'   : 마우스 누름시
  • 'mousehover'   : 마우스가 올려졌을때
  • 'mouseleave'   : 마우스가 올려 졌다가 벗어 났을 경우
  • 'mousedoubleclick' : 마우스가 더블 클릭 되었을때


 예)

def  handleMousePressed():

    print 'clicked'


#사각형 개체 생성

obj = canvas.createObject('rectShape')

#개체 이동

obj.setPos(50,50 )


#개체에 마우스 누름 이벤트 등록

obj.addEventAction('mousepress' , 'handleMousePressed()'  )