MayaMel:UI—窗口简介

一、窗口

1.写法

基础指令 (加方括号表示可以没有)

window  [后缀指令] [窗口名];

[布局声明;]

[基础元素;]

showWindow [窗口名];

2.最简单的窗口创建

window;
showWindow;

这里maya会给window起一个默认的名字。但是最好是自己取一个窗口名,不然回头调用起来也挺麻烦的

3.多次打开某个窗口

按照我们平时使用maya的经验,当某一个窗口已经打开了,再次点开一遍,并不会报错,而且这个窗口还会从新移动到比较显眼的位置,想要达到这个效果,需要写一个判断语句。

如果窗口存在,则先删除窗口,然后再从新创建一个

window zyr;
if(`window -ex zyr`)          //-ex 查看是否存在zyr
{                                         //mel语句里面很多时候会加``  它的意思是取mel函数的返回值
    deleteUI zyr;
}
showWindow zyr;

4.后缀指令

就是指定一下window的各个参数值,比如说标题名称,长宽高,背景颜色等等

具体的参数看window帮助文档

string $window = `window -title "zyr"
       -iconName "美女"   //the windows icon tittle
       -widthHeight 200 55`;         //取window语句的返回值到$window中

showWindow $window;

也可以这样写

window 

       -title "zyr"
       -iconName "美女"   //the windows icon tittle
       -widthHeight 200 55

        zyr;    

showWindow zyr;

窗口建好之后也可以进行一些修改

window -edit -widthHeight 900 777 zyr;

5.布局声明

就是安排窗口内部的组件该怎么放置,比如说

columnLayout -adjustableColumn true; // 竖直排列  每个元素都拉伸到窗口一样的宽度

详见官方文档

6.基础元素

窗口内的基本元素有:按钮button、滑条int/floatSliderGrp、文本框int/floatField、文字text、分隔符separator等等

具体的内容在官方文档里面搜索即可

基础元素这一部分的内容就是写在“布局声明”和showWindow之间的,比如声明了两个按钮

       button -label "Do Nothing";
       button -label "Close";

        末尾我会放一下完整的代码

但是现在按钮点了并没有什么用,要给每一个按钮添加一个脚本,也就是click之后自动调用某个脚本(一般是调用一个函数,但是如果脚本很简单也可以直接写),以实现点击按钮有相应效果。

     

比如给刚才的close按钮添加关闭窗口的脚本

 button -label "Close" -command   ("deleteUI -window " + $window) ;

//因为是写在双引号中的,所以可以认为script是一大串的字符

7.完整代码

string $window = `window -title "zyr"
       -iconName "美女"
       -widthHeight 800 400`;
columnLayout -adjustableColumn true;
       button -label "Do Nothing";
       button -label "Close" -command ("deleteUI -window " + $window);
setParent ..;
showWindow $window;

二、快速创建物体插件实例

1.插件作用设计

        快速的创建小球,可以在创建之前调节小球的参数

string $window = `window -title "createpoly"
       -widthHeight 800 400`;
columnLayout -adjustableColumn true;
       text -label "\n 快速创建物体 \n" ;
       floatSliderGrp -label "半径: " -field true -min 0.0 -max 10.0 sphereslider;
       button -label "polySphere" -command "sphereradius";
       button -label "Close" -command ("deleteUI -window " + $window);
setParent ..;
showWindow $window;

global proc sphereradius()
{
    //get slider's float number
    float $spradius=`floatSliderGrp -q -v sphereslider`;
    //create sphere
    polySphere -radius $spradius;
}

//另一种排布的示例

window;

rowLayout -numberOfColumns 4
        -columnWidth4 80 100 80 100
        -adjustableColumn 1
        -adjustableColumn 3
        -columnAlign 1 "right"
        -columnAlign 3 "right"
        -columnAttach 1 "both" 0
        -columnAttach 2 "both" 0
        -columnAttach 3 "both" 0
        -columnAttach 4 "both" 0; 
       text -label "width:";     
       floatField ;
       text -label "height:";
       floatField ; 

showWindow;

三、窗口菜单和主界面菜单

窗口菜单:menu

主界面菜单:$gMainWindow

这两种菜单都是可以人为添加的

1.窗口菜单

窗口菜单menu是在布局声明之前定义的,另外在后缀指令中必须有"-menuBar true"

menu -label "File" -tearOff true;
    menuItem -label "New";
    menuItem -label "Open";
    menuItem -label "Save";
    menuItem -divider true;
    menuItem -label "Quit";
menu -label "Help" -helpMenu true;
    menuItem -label "About Application...";

2.主界面菜单

猜你喜欢

转载自blog.csdn.net/karonneveralone/article/details/121611812