使用Python在Maya中使用简单的自定义UI

时间:2014-01-20 06:38:05

标签: python maya

您好我正在学习使用Python为Maya创建自定义UI。我正在努力实现一些我无法做到的事情。我四处搜寻但找不到答案。

import maya.cmds as cmds

def main():

    cmds.window(title='Test Window')
    cmds.columnLayout()
    cmds.textFieldGrp('obj1', label='Name', text ="Please enter your name")
    cmds.textFieldGrp('obj2', label='Address', text = "Please enter your address")
    cmds.rowLayout(nc=3)
    cmds.button(label="Lock", width=100, c='disable_texts()')
    cmds.button(label="Edit", width=100, c='change_texts()')
    cmds.button(label="Reset", width=100, c='default()')
    cmds.showWindow()

def disable_texts():
    # disable the text fields

def change_texts():
    # enable the text fields

def default():
   # change the text fields back to default ie like above

2 个答案:

答案 0 :(得分:1)

如果我理解,这可能会回答你的问题..

cmds.window(title='Test Window')
cmds.columnLayout()
cmds.textFieldGrp('obj1', label='Name', text ="Please enter your name")
cmds.textFieldGrp('obj2', label='Address', text = "Please enter your address")
cmds.rowLayout(nc=3)
cmds.button(label="Lock", width=100, c=disable_texts)
cmds.button(label="Edit", width=100)
cmds.button(label="Reset", width=100)
cmds.showWindow()

def disable_texts(*args):
    #The e=True is for edit, so I'm 'editing' 'obj1' which is the name of the textFieldGrp
    cmds.textFieldGrp('obj1', e=True, enable=False)

作为旁注,最好将函数对象传递给command标志。如果您不确定原因,请检查this。对于cmds函数,您应该检查文档以查看其他命令。

答案 1 :(得分:1)

在您使用Maya内置功能布局UI之后,我建议您为Maya设置PyQT。

如果您使用的是2014年以下的Maya版本,则需要从此处安装已编译的PyQt:http://nathanhorne.com/?s=pyqt

由于Maya将PyQT与2014年相结合(因此2015年也是如此),因此您无需为此版本安装任何内容。

这里有一些入门教程: http://zurbrigg.com/maya-python/category/pyqt-projects-for-maya

玩得开心!!!