cmds.formLayout 상세 설명

cmds.formLayout 상세 설명 | 지식에 대한 탐구

 

개요

maya.cmds.formLayout 함수는 Maya에서 폼 레이아웃(Form Layout)을 생성하는 데 사용됩니다. 폼 레이아웃은 UI 요소들을 유연하게 배치하고, 다양한 배치 옵션을 통해 복잡한 레이아웃을 구성할 수 있도록 합니다.

 

함수 서명


maya.cmds.formLayout(layoutName=None, **kwargs)

 

인자

  • layoutName (string, optional): 레이아웃의 이름을 지정합니다. 이름을 지정하지 않으면 Maya가 자동으로 이름을 할당합니다.

 

반환 값

string: 생성된 레이아웃의 이름을 반환합니다.

 

키워드 인자 (kwargs)

maya.cmds.formLayout 함수는 여러 키워드 인자를 허용합니다. 주요 키워드 인자와 그 설명은 다음과 같습니다:

 

일반적인 인자

  • numberOfDivisions (int): 레이아웃을 나누는 구분의 수를 설정합니다. 예시: numberOfDivisions=100
  • backgroundColor (tuple): 레이아웃의 배경 색상을 RGB 값으로 설정합니다. 예시: backgroundColor=(0.2, 0.2, 0.2)
  • visible (bool): 레이아웃의 가시성을 설정합니다. 예시: visible=True

 

배치 관련 인자

  • attachForm (list): 특정 UI 요소를 레이아웃의 폼에 붙입니다. 각 항목은 (UI 요소, 위치, 거리)의 튜플로 구성됩니다. 예시: attachForm=[(button, 'top', 5), (button, 'left', 5)]
  • attachControl (list): 특정 UI 요소를 다른 UI 요소에 붙입니다. 각 항목은 (UI 요소, 위치, 거리, 기준 UI 요소)의 튜플로 구성됩니다. 예시: attachControl=[(slider, 'top', 5, button)]
  • attachPosition (list): 특정 UI 요소를 레이아웃의 특정 위치에 붙입니다. 각 항목은 (UI 요소, 위치, 거리, 비율)의 튜플로 구성됩니다. 예시: attachPosition=[(button, 'left', 0, 50)]
  • attachNone (list): 특정 UI 요소를 레이아웃의 폼에 붙이지 않습니다. 예시: attachNone=[button]

 

사용 예제

 

기본 예제


import maya.cmds as cmds

# 레이아웃 생성
form = cmds.formLayout()

# UI 요소 추가
button1 = cmds.button(label="Button 1")
button2 = cmds.button(label="Button 2")

# 레이아웃 설정
cmds.formLayout(form, edit=True, 
    attachForm=[(button1, 'top', 10), (button1, 'left', 10)],
    attachControl=[(button2, 'top', 10, button1)],
    attachNone=[(button2, 'left')]
)

# 창 생성 및 표시
window = cmds.window(title="Form Layout Example", widthHeight=(300, 200))
cmds.columnLayout()
cmds.setParent(form)
cmds.showWindow(window)

 







 

고급 예제


import maya.cmds as cmds

# 창 생성
win = cmds.window(title="Advanced Form Layout", widthHeight=(400, 300), sizeable=True)

# 폼 레이아웃 생성
form = cmds.formLayout()

# UI 요소 추가
button1 = cmds.button(label="Button 1", width=100)
button2 = cmds.button(label="Button 2", width=100)
slider = cmds.floatSlider(min=0, max=100, value=50)

# 폼 레이아웃 설정
cmds.formLayout(form, edit=True,
    attachForm=[(button1, 'top', 10), (button1, 'left', 10),
                (button2, 'top', 10)],
    attachControl=[(button2, 'left', 10, button1),
                   (slider, 'top', 10, button1)],
    attachPosition=[(slider, 'left', 0, 25), (slider, 'right', 0, 75)]
)

# 창 표시
cmds.showWindow(win)

 

참고 사항

  • attachForm, attachControl, attachPositionattachNone 인자는 서로 결합하여 사용될 수 있습니다. 이를 통해 UI 요소를 폼 레이아웃 내에서 유연하게 배치할 수 있습니다.
  • 각 인자는 리스트 형식으로 제공되며, 리스트의 각 항목은 튜플로 구성됩니다. 튜플은 UI 요소와 위치 정보를 포함합니다.
  • cmds.setParent(form) 명령을 사용하여 생성된 폼 레이아웃을 활성 창의 부모 레이아웃으로 설정할 수 있습니다.

 

오류 처리

  • RuntimeError: 잘못된 인자나 잘못된 레이아웃 설정이 있을 경우 발생합니다.
    
    # 해결 방법: 인자 값을 검토하고 올바르게 설정합니다.
    try:
        cmds.formLayout(form, edit=True, attachForm=[(button1, 'top', 10)])
    except RuntimeError as e:
        print(f"Error: {e}")

 

결론

cmds.formLayout 함수는 Maya의 사용자 인터페이스 요소를 유연하게 배치할 수 있는 강력한 도구입니다. 다양한 옵션을 통해 UI 요소의 배치와 크기를 세밀하게 조정할 수 있으며, 이를 통해 복잡한 UI 레이아웃을 효과적으로 구성할 수 있습니다. 이 함수의 이해와 활용은 Maya 스크립팅의 중요한 부분을 차지합니다.