Maya Python:下拉菜单与按钮对齐问题求助
Maya Python UI 对齐问题解决
我刚接触Maya Python开发,想让下拉菜单和两个按钮相互对齐,目前的UI里元素对齐混乱,原代码如下:
def win(myWin): if cmds.window(myWin, exists = True): cmds.deleteUI(myWin) myWin = cmds.window(myWin, rtf = True, width=250, height=180) cmds.columnLayout() cmds.text(label = 'Create Controllers and Change Colours', font = 'boldLabelFont') # Controllers cmds.separator(height = 20) ctrSelectMenu = cmds.optionMenu(label = 'Controller Type') cmds.menuItem(label = 'Circle X') cmds.menuItem(label = 'Circle Y') cmds.menuItem(label = 'Circle Z') cmds.menuItem(label = 'Cube')) # 语法错误:多了一个右括号 cmds.separator(style = 'none', height = 5) cmds.button(label = 'Create', c = lambda x:createControls(ctrSelectMenu), width = 100, align = 'centre') # Colours cmds.separator(style = 'none', height = 20) clrSelectMenu = cmds.optionMenu(label = 'Controller Colour') cmds.menuItem(label = 'Black') cmds.menuItem(label = 'Grey') cmds.menuItem(label = 'Light Grey') cmds.menuItem(label = 'White') cmds.menuItem(label = 'Maroon') cmds.menuItem(label = 'Red') cmds.menuItem(label = 'Rust Red') cmds.menuItem(label = 'Dark Blue') cmds.menuItem(label = 'Indigo') cmds.menuItem(label = 'Blue') cmds.menuItem(label = 'Navy Blue') cmds.menuItem(label = 'Sky Blue') #cmds.separator(style = 'none', height = 5) cmds.button(label = 'Apply', c = lambda x:controllerColour(clrSelectMenu),width = 250, align = 'right') cmds.showWindow(myWin) cmds.window(myWin, e=True, width=250, height=180) win('Create Controllers')
问题分析
- 未统一
columnLayout下元素的宽度与对齐规则,导致下拉菜单和按钮宽度错位 - 代码存在语法错误:
cmds.menuItem(label = 'Cube'))多了一个右括号,运行会直接报错 - 按钮的
align参数与布局逻辑不匹配,宽度设置也和下拉菜单不一致
修改后的代码
def win(myWin): if cmds.window(myWin, exists=True): cmds.deleteUI(myWin) myWin = cmds.window(myWin, rtf=True, width=250, height=180) # 设置列布局的统一宽度与对齐方式 cmds.columnLayout(align='left', columnWidth=250) cmds.text(label='Create Controllers and Change Colours', font='boldLabelFont') # Controllers cmds.separator(height=20) # 给下拉菜单设置固定宽度,与按钮统一 ctrSelectMenu = cmds.optionMenu(label='Controller Type', width=250) cmds.menuItem(label='Circle X') cmds.menuItem(label='Circle Y') cmds.menuItem(label='Circle Z') cmds.menuItem(label='Cube') # 修复语法错误 cmds.separator(style='none', height=5) # 按钮宽度与下拉菜单统一,对齐方式保持一致 cmds.button(label='Create', c=lambda x:createControls(ctrSelectMenu), width=250, align='centre') # Colours cmds.separator(style='none', height=20) clrSelectMenu = cmds.optionMenu(label='Controller Colour', width=250) cmds.menuItem(label='Black') cmds.menuItem(label='Grey') cmds.menuItem(label='Light Grey') cmds.menuItem(label='White') cmds.menuItem(label='Maroon') cmds.menuItem(label='Red') cmds.menuItem(label='Rust Red') cmds.menuItem(label='Dark Blue') cmds.menuItem(label='Indigo') cmds.menuItem(label='Blue') cmds.menuItem(label='Navy Blue') cmds.menuItem(label='Sky Blue') cmds.separator(style='none', height=5) cmds.button(label='Apply', c=lambda x:controllerColour(clrSelectMenu), width=250, align='centre') cmds.showWindow(myWin) cmds.window(myWin, e=True, width=250, height=180) win('Create Controllers')
关键修改点
- 给
columnLayout添加columnWidth=250,强制所有元素遵循统一列宽,保证对齐基础 - 给两个下拉菜单设置
width=250,与按钮宽度完全匹配 - 修复了下拉菜单的语法错误,保证代码可正常运行
- 统一按钮的对齐方式为
centre(也可根据需求改为left),与下拉菜单视觉对齐 - 恢复"Apply"按钮上方的分隔符,保持UI间距一致
内容的提问来源于stack exchange,提问作者Anjani Sathe
相关产品推荐
相关产品推荐

