7.2 基本GUI命令

在GUI元素名称前添加其姓名或工作室的首字母作为前缀。

import maya.cmds as cmdscmds.deleteUI(win,window = True)
win = cmds.window('ar_optionsWindow',title = 'My First Window',widthHeight = (546,350))
cmds.showWindow(win)

7.3 构建窗基类

class AR_OptionsWindow(object):def __init__(self):self.window = 'ar_optionWindow'self.title = 'Options Window'self.size = (546,350)def create(self):if cmds.window(self.window,exists = True):cmds.deleteUI(self.window,window = True)self.window = cmds.window(self.window,title = self.title,widthHeight = self.size)cmds.showWindow()      testWindow = AR_OptionsWindow()
testWindow.create()        

class AR_OptionsWindow(object):def __init__(self):self.window = 'ar_optionWindow'self.title = 'Options Window'self.size = (546,350)      def commonMenu(self):self.editMenu = cmds.menu(label = 'Edit')self.editMenuSave = cmds.menuItem(label = 'Save Settings')self.editMenuReset = cmds.menuItem(label = 'Restet Settings'        )self.editMenuDiv = cmds.menuItem(d = True)self.editMenuRadio = cmds.radioMenuItemCollection()self.editMenuTool = cmds.menuItem(label = 'As Tool',radioButton = True,#enable = self.supportsToolAction           )self.editMenuTool = cmds.menuItem(label = 'As Action',radioButton = True,# enable = self.supportsToolAction           )self.helpMenu = cmds.menu(label = 'Help')self.helpMenuItem = cmds.menuItem(label = 'Help on %s'%self.title)def create(self):if cmds.window(self.window,exists = True):cmds.deleteUI(self.window,window= True)self.window = cmds.window(self.window,title = self.title,widthHeight = self.size,menuBar  = True)self.commonMenu()cmds.showWindow()testWindow = AR_OptionsWindow()
testWindow.create()

对GUI对象执行命令

使用functools模块

from functools import partial
import maya.cmds as cmdsclass LocatorWindow(object):def __init__(self):self.win = cmds.window('ar_locSample',widthHeight=(100, 100),menuBar=True)self.menu = cmds.menu(label='Make Locators')for i in range(5):cmds.menuItem(l='Make %i' % (i + 1),command=partial(self.makeLocCmd, i + 1))cmds.showWindow()def makeLocCmd(self, numLocators, *args):locs = []for i in range(numLocators):locs.append(cmds.spaceLocator(p=[-(numLocators + 1) * 0.5 + i + 1, 0, 0])[0])cmds.select(locs)win = LocatorWindow()

完整的AR_OptionsWindow类:

import os
import maya.cmds as cmds
import maya.mel as melclass AR_OptionsWindow(object):@classmethoddef showUI(cls):win = cls()win.create()return windef __init__(self):self.window = 'ar_optionsWindow'    self.title = 'Options Window'self.size = (546,350)self.supportsToolAction = Falseself.actionName = 'Apply and Close'def create(self):if cmds.window(self.window,exists = True):cmds.deleteUI(self.window,window = True)self.window = cmds.window(self.window,title = self.title,widthHeight = self.size,menuBar = True       ) self.mainForm = cmds.formLayout(nd = 100)self.commonMenu()self.commonButtons()self.optionsBorder = cmds.tabLayout(scrollable = True,tabsVisible = False,height = 1)    cmds.formLayout(self.mainForm, e=True,attachForm=([self.optionsBorder,'top',0],[self.optionsBorder,'left',2],[self.optionsBorder,'right',2]),attachControl = ([self.optionsBorder,'bottom',5,self.applyBtn]       ))           self.optionsForm = cmds.formLayout(nd = 100)#self.displayOptions()cmds.showWindow()def commonMenu(self):self.editMenu = cmds.menu(label = 'Edit')self.editMenuSave = cmds.menuItem(label =  'Save Settings',command = self.editMenuSaveCmd)self.editMenuReset = cmds.menuItem(label = 'Reset Settings',command = self.editMenuResetCmd        )self.editMenuDiv = cmds.menuItem(d = True)self.editMenuRadio = cmds.radioMenuItemCollection()self.editMenuTool = cmds.menuItem(label = 'As Tool',radioButton = True,enable = self.supportsToolAction,command = self.editMenuToolCmd)self.editMenuAction = cmds.menuItem(label = 'As Action',radioButton = True,enable = self.supportsToolAction,command = self.editMenuActionCmd)    self.helpMenu = cmds.menu(label = 'Help')self.helpMenuItem = cmds.menuItem(label = 'Help on %s'%self.title,command = self.helpMenuCmd)def helpMenuCmd(self,*args):cmds.launch(web = 'http://maya-python.com')    def editMenuSaveCmd(self,*args):passdef editMenuResetCmd(self,*args):passdef editMenuToolCmd(self,*args):passdef editMenuActionCmd(self,*args):pass   def actionBtnCmd(self,*args):self.applyBtnCmd()self.closeBtnCmd()def applyBtnCmd(self,*args):pass def closeBtnCmd(self,*args):cmds.deleteUI(self.window,window =True)def commonButtons(self):self.commonBtnSize = ((self.size[0]-18)/3,26)self.actionBtn = cmds.button(label = self.actionName,height = self.commonBtnSize[1],command = self.actionBtnCmd)self.applyBtn = cmds.button(label = 'Apply',height = self.commonBtnSize[1],command = self.applyBtnCmd)self.closeBtn = cmds.button(label = 'Close',height = self.commonBtnSize[1],command = self.closeBtnCmd)cmds.formLayout(self.mainForm, e = True,attachForm = ([self.actionBtn,'left',5],[self.actionBtn,'bottom',5],[self.applyBtn,'bottom',5],[self.closeBtn,'bottom',5],  [self.closeBtn,'right',5]         ),attachPosition = ([self.actionBtn,'right',1,33],[self.closeBtn,'left',0,67]),    attachControl = ([self.applyBtn,'left',4,self.actionBtn],[self.applyBtn,'right',4,self.closeBtn]),attachNone = ([self.actionBtn,'top'],[self.applyBtn,'top'],[self.closeBtn,'top']) )   def displayOpitons(self):pass win = AR_OptionsWindow()
win.create()
import os
import maya.cmds as cmds
import maya.mel as melclass AR_OptionsWindow(object):@classmethoddef showUI(cls):win = cls()win.create()return windef __init__(self):self.window = 'ar_optionsWindow'self.title = 'Options Window'self.size = (546, 350)self.supportsToolAction = Falseself.actionName = 'Apply and Close'def create(self):if cmds.window(self.window, exists=True):cmds.deleteUI(self.window, window=True)self.window = cmds.window(self.window,title=self.title,widthHeight=self.size,menuBar=True)self.mainForm = cmds.formLayout(nd=100)self.commonMenu()self.commonButtons()self.optionsBorder = cmds.tabLayout(scrollable=True,tabsVisible=False,height=1)cmds.formLayout(self.mainForm, e=True,attachForm=([self.optionsBorder, 'top', 0],[self.optionsBorder, 'left', 2],[self.optionsBorder, 'right', 2]),attachControl=([self.optionsBorder, 'bottom', 5, self.applyBtn]))self.optionsForm = cmds.formLayout(nd=100)self.displayOptions()cmds.showWindow()def commonMenu(self):self.editMenu = cmds.menu(label='Edit')self.editMenuSave = cmds.menuItem(label='Save Settings',command=self.editMenuSaveCmd)self.editMenuReset = cmds.menuItem(label='Reset Settings',command=self.editMenuResetCmd)self.editMenuDiv = cmds.menuItem(d=True)self.editMenuRadio = cmds.radioMenuItemCollection()self.editMenuTool = cmds.menuItem(label='As Tool',radioButton=True,enable=self.supportsToolAction,command=self.editMenuToolCmd)self.editMenuAction = cmds.menuItem(label='As Action',radioButton=True,enable=self.supportsToolAction,command=self.editMenuActionCmd)self.helpMenu = cmds.menu(label='Help')self.helpMenuItem = cmds.menuItem(label='Help on %s' % self.title,command=self.helpMenuCmd)def helpMenuCmd(self, *args):cmds.launch(web='http://maya-python.com')def editMenuSaveCmd(self, *args): passdef editMenuResetCmd(self, *args): passdef editMenuToolCmd(self, *args): passdef editMenuActionCmd(self, *args): passdef actionBtnCmd(self, *args):self.applyBtnCmd()self.closeBtnCmd()def applyBtnCmd(self, *args): passdef closeBtnCmd(self, *args):cmds.deleteUI(self.window, window=True)def commonButtons(self):self.commonBtnSize = ((self.size[0] - 18) / 3, 26)self.actionBtn = cmds.button(label=self.actionName,height=self.commonBtnSize[1],command=self.actionBtnCmd)self.applyBtn = cmds.button(label='Apply',height=self.commonBtnSize[1],command=self.applyBtnCmd)self.closeBtn = cmds.button(label='Close',height=self.commonBtnSize[1],command=self.closeBtnCmd)cmds.formLayout(self.mainForm, e=True,attachForm=([self.actionBtn, 'left', 5],[self.actionBtn, 'bottom', 5],[self.applyBtn, 'bottom', 5],[self.closeBtn, 'bottom', 5],[self.closeBtn, 'right', 5]),attachPosition=([self.actionBtn, 'right', 1, 33],[self.closeBtn, 'left', 0, 67]),attachControl=([self.applyBtn, 'left', 4, self.actionBtn],[self.applyBtn, 'right', 4, self.closeBtn]),attachNone=([self.actionBtn, 'top'],[self.applyBtn, 'top'],[self.closeBtn, 'top']))def displayOptions(self):passclass AR_PolyOptionsWindow(AR_OptionsWindow):def __init__(self):AR_OptionsWindow.__init__(self)self.title = 'Polygon Creation Options'self.actionName = 'Create'def displayOpitons(self):sefl.objType = cmds.radioButtonGrp(label='Object Type',labelArray4=['Cube','Cone','Cylinder','Sphere'],numberOfRadioButtons=4,select=1)self.xformGrp = cmds.frameLayout(label='Transformations',collapsable=True)cmds.formLayout(self.optionsForm, e=True,attachControl=([self.xformGrp, 'top', 2, self.objType]),attachForm=([self.xformGrp, 'left', 0],[self.xformGrp, 'right', 0]))self.xformCol = cmds.columnLayout()self.position = cmds.floatFieldGrp(label='Positon:',numberOfFields=3)self.rotation = cmds.floatFieldGrp(label='Rotation (XYZ):',numberOfFields=3)self.scale = cmds.floatFieldGrp(label='Scale:',numberOfFields=3,value=[1.0, 1.0, 1.0, 1.0])cmds.setParent(self.optionsForm)def applyBtnCmd(self, *args):self.objIndAsCmd = {1: cmds.polyCube,2: cmds.polyCone,3: cmds.polyCylinder,4: cmds.polySphere}objIndex = cmds.radioButtonGrp(self.objType, q=True,select=True)newObject = self.objIndAsCmd[objIndex]()pos = cmds.floatFieldGrp(self.position, q=True,value=True)pos = cmds.floatFieldGrp(self.rotation, q=True,value=True)pos = cmds.floatFieldGrp(self.scale, q=True,value=True)cmds.xform(newObject[0],t=pos,ro=rot,s=scale)AR_PolyOptionsWindow.showUI()

Maya Python 第七章 使用Maya命令创建基本工具 7.1-7.3相关推荐

  1. Maya Python 第三章 在Maya 中编写python程序

    3.2 Maya 命令 import maya.cmds as cmdssphere = cmds.polySphere() cmds.polySphere(sphere[1],edit=True,r ...

  2. Python 打造基于百度翻译的命令行翻译工具

    Python 打造基于百度翻译的命令行翻译工具 由于英文水平一般,所以还是非常依赖翻译工具的.fanyi.baidu.com 都成了我浏览器必开的网页之一了.昨天项目上线,等待过程中,无聊写了一个基于 ...

  3. maya python 开根号_Python 编写Maya插件,从0到1(一)

    最近生活有点鬼畜,在忙着搞SD材质库的同时,还要负责美术工具的开发.没错--每一个初级TA都绕不过的坎儿-写工具-- 最关键是--我没写过--emmm--所以最近生活有点苦--踩坑踩的脚都瘸了-- 网 ...

  4. maya python教程_Chris Zurbrigg的Maya Python教程合集

    Chris Zurbriggs Patreon的视频更新到2020年年底.在我看来,这些视频在深度和广度以及信息质量上都是无与伦比的.如果可以,请考虑捐赠给Zurbigg. Chris Zurbrig ...

  5. python第七章_python 第七章 模块

    模块 一个py文件就是一个模块 模块一共三种:1.python标准库 2.第三方模块 3.应用程序自定义模块 import:1.执行对应文件 2.引入变量名 if__name__="__ma ...

  6. python第七章_Python第七章

    第 7 章 用户输入和while循环 7.1 函数input()的工作原理 message = input("Tell me something, and I will repeat it ...

  7. python第七章文件和数据格式化选择题_《计算机二级Python语言程序设计考试》第7章:文件和数据格式化...

    注明:本系列课程专为全国计算机等级考试二级 Python 语言程序设计考试服务 目录 考纲考点 文件的使用: 文件打开.关闭和读写 数据组织的维度:一维数据和二维数据 一维数据的处理:表示.存储和处理 ...

  8. Python第七章-面向对象高级

    面向对象高级 一. 特性 特性是指的property. property这个词的翻译一直都有问题, 很多人把它翻译为属性, 其实是不恰当和不准确的. 在这里翻译成特性是为了和属性区别开来. 属性是指的 ...

  9. python第七章_python教程(第七章)

    字典和集合 字典是python中唯一,一个映射类型 如何创建一个字典,如下>>> dict = {"渗透":"网络安全","笔记&q ...

最新文章

  1. ADSL自动更换IP地址源代码
  2. 怎么查看linux是不是as7u4,Linux下搭建Android开发环境
  3. c#操作xml实例 2009-03-13 20:00
  4. JavaScript Object对象
  5. win7 64-bit minifilter
  6. c++ 读文件_Linux文件(文件夹)详解
  7. golang配置export GOPRIVATE拉取私有库代码
  8. 小程序分享到朋友圈功能_来啦!小程序支持分享朋友圈
  9. 【二分】抄书 (jzoj 2123)
  10. linux 如何打包分区文件,Linux基础------文件打包解包---tar命令,文件压缩解压---命令gzip,vim编辑器创建和编辑正文件,磁盘分区/格式化,软/硬链接...
  11. 怎么看另一个电脑端口是否通_谁一个人睡觉另一个看看夫妻的睡眠习惯
  12. python编程软件排行榜_PYPL 9月编程语言排行榜发布 Python一枝独秀
  13. jieba库词频统计_运用jieba库进行词频统计
  14. python信息安全工具之端口扫描器
  15. 暗时间 pdf_时间管理最全的一篇:理论+实践+电子书
  16. 初中学校计算机机房管理制度,学校机房管理制度
  17. S60 Python 编程指南——如何创建pys60应用程序
  18. 读季琦《创始人·手记》
  19. ssd存储的SLC、MLC、TLC闪存芯片颗粒有什么区别?
  20. 软件系统产品信息安全功能点要求

热门文章

  1. 工业品B2B平台5大要诀,降低企业采购成本捷径
  2. word文档自动保存方法
  3. 【转】未连接到互联网的解决方法(chrome)
  4. 台式电脑win7旗舰版 怎么调节屏幕亮度 显示器太亮了!
  5. STA X(X为主存地址)指令发出的微操作命令
  6. 青海省国家湿地公园功能区划数数据、全国湿地沼泽分布数据、全国省市县自然保护区
  7. 微软“匈牙利”法程序标示符命名规则
  8. 2019年3月最新windwows101809教育版激活密钥及其下载地址
  9. 并发与并行,线程与进程如何理解
  10. stanfordnlp使用自定义分词分句