개요
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,attachPosition및attachNone인자는 서로 결합하여 사용될 수 있습니다. 이를 통해 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 스크립팅의 중요한 부분을 차지합니다.