기본 성질
cmds.columnLayout,cmds.rowLayout,cmds.formLayout호출 시 그 다음에 호출되는 UI 요소들(예:cmds.text,cmds.button)은 해당 레이아웃 내부에 배치된다. 상위 레이아웃 또는 특정 레이아웃으로 빠져나가고 싶은 경우 cmds.setParent 를 사용한다.cmds.columnLayout,cmds.rowLayout은 말그대로 하위 요소들이 세로로 배치 또는 가로로 배치되며cmds.formLayout은 attach 시 부모나 다른 요소에 상대적으로 배치 가능하다.
formLayout의 attach 옵션들
attachForm
css의 position: absolute 와 비슷하다. 즉 부모 formLayout 모서리 상대적으로 배치 가능하다.
예시: cmds.formLayout(form, edit=True, attachForm=[(button1, "top", 5), (button1, "left", 5)])
→ button1 을 form 위쪽에서 5px, 왼쪽에서 5px 띄움.
attachControl
css의 margin-left, margin-top과 비슷하다. 즉 다른 UI 요소에 상대적으로 배치 가능하다.
예시: cmds.formLayout(form, edit=True, attachControl=[(button2, "top", 5, button1)])
→ button2 는 button1 밑으로 5px 떨어져서 배치됨.
attachPosition
css의 left: 50% 같이 퍼센트 기반 위치 지정과 유사하다. 즉 부모 formLayout 크기 상대적으로 배치 가능하다.
예시: cmds.formLayout(form, edit=True, attachPosition=[(button3, "left", 0, 50)])
→ button3 을 form의 가로 50% 지점에 붙임.
종합 예시
import maya.cmds as cmds
if cmds.window("formTestWin", exists=True):
cmds.deleteUI("formTestWin")
cmds.window("formTestWin", title="FormLayout Test", widthHeight=(300, 150))
form = cmds.formLayout()
btn1 = cmds.button(label="Top Left")
btn2 = cmds.button(label="Below Btn1")
btn3 = cmds.button(label="Right Half")
cmds.formLayout(form, edit=True,
attachForm=[(btn1, "top", 5), (btn1, "left", 5)], # 부모 모서리에 붙이기
attachControl=[(btn2, "top", 5, btn1)], # 다른 버튼 기준
attachPosition=[(btn3, "left", 0, 50), (btn3, "top", 30)]) # 퍼센트 기반
cmds.showWindow("formTestWin")
- btn1 → form의 좌측 상단에 고정
- btn2 → btn1 바로 아래
- btn3 → form 가로의 절반 위치에 고정
'파이썬' 카테고리의 다른 글
| VSCode MayaCode 확장 사용 시 발생하는 디코드 에러 고치기 (3) | 2025.06.20 |
|---|---|
| 마야 파이썬 스크립트 작성을 위한 VSCode 셋업 - 마야 2025 기준 (0) | 2025.04.18 |