blender/blender python

커스텀 레이아웃

monstro 2025. 7. 17. 16:21
728x90
반응형

- 개요

이번에는 이전에 만든 텍스트 Add-On으로 생성하는 대화상자의 레이아웃

정해진 모양이 아닌 설계자가 원하는 모양으로 디자인하는 방법을 알아본다

레이아웃의 디자인은 레이아웃을 포함하는 클래스의 draw 함수를 오버라이드함으로써 수정할 수 있다

 

- 코드 수정

...

class WM_OT_TextOp(bpy.types.Operator):
    
    ...
    
    def draw(self, context):
        # layout setting
        layout = self.layout
        layout.label(text="Sample Text")
        layout.prop(self, "text")
        layout.prop(self, "scale")
        layout.separator(factor=2)
        
        
        # box setting
        box = layout.box()
        row = box.row()
        row.prop(self, "center")
        if self.center == True:
            row.label(text="Align with World Center", icon='WORLD')
        else:
            row.label(text="Align with Local Center", icon='ORIENTATION_LOCAL')
        layout.separator(factor=2)
        
        
        # box - row setting
        row = box.row()
        row.prop(self, "extrude")
        if self.extrude == True:
            row.prop(self, "extrude_amount")
    
    ...
    
...

 

기존의 클래스에 위와 같이 draw 함수를 추가하였다

draw 함수의 로직은 다음과 같이 구성하였다

  • 팝업되는 대화상자의 전체 레이아웃
    • 생성할 글씨글씨 크기는 레이아웃에 배치
    • separator 속성을 사용하여 2만큼의 간격 추가
  • 레이아웃 안에 box를 추가하여 공간을 분리
    • 생성할 글씨의 가운데 정렬 설정은 박스에 배치
    • 설정 여부에 따라 동일한 행에 다른 메세지 출력
    • separator 속성을 사용하여 2만큼의 간격 추가
  • box안에 다른 행을 추가하여 박스안에서의 을 분리
    • 생성할 글씨의 extrude 여부 설정
    • extrude하는 경우 extrude할 크기를 설정하는 슬라이더 활성화

 

- 최종 실행 결과

 

728x90
반응형

'blender > blender python' 카테고리의 다른 글

register 함수 / unregister 함수 개선  (0) 2025.07.23
단축키  (0) 2025.07.23
커스텀 노드 그룹  (0) 2025.07.16
텍스트 Add-On  (0) 2025.07.09
대화 상자  (0) 2025.07.09