如何往窗口中添加按钮以及通过按钮执行命令
发布网友
发布时间:2022-04-22 04:14
我来回答
共1个回答
热心网友
时间:2024-01-17 10:27
在为窗口中加入命令之前,我们需要给窗口一个布局界面,这里需要注意,没有布局的窗口是无法往里面加入任何东西的。布局有很多的方式,在这里我们使用一个columnLayout,这是一个纵列的布局,其中有许多的参数,这里我们简单的使用-adj,他的作用是让元素对齐窗口的两边。我们的这一句布局要放在showWindow之前,也要在窗口元素(按钮等)之前,保证mel的正确运行。
现在来为窗口添加一个按钮。按钮的mel为button,这里介绍他的三个后缀,分别是-label,-h,-c
-label:标题,也就是按钮的名字,后接字符串,为自己的按钮起个名字,这里我们叫myButton。
-h:高度,定义按钮的高度,后接一个浮点数。
-c:命令,决定这个按钮摁下去会执行一个什么操作,后接proc(程序)。
我们来完整的写一下这个按钮:
button -l "myButton" -h 20 -c "";
这里的-c后面我暂时留空,因为我们还没有定义出一个proc来让他调用。这是我们接下来要完成的。现在我们先把这句mel放在布局之后的位置,然后使用//屏蔽掉从-c开始的内容,运行一下看看我们现在窗口的样子。
如何往窗口中添加按钮以及通过按钮执行命令
我们已经可以看到自己的窗口与按钮,如果觉得按钮太小了,还可以增大-h后面的值。现在这个按钮不会发挥任何作用,我们要为其定义一个程序来让其使用。
使用proc定义一个自定义的程序,他的格式如下:
proc 名字(行参){内容}。
这里的行参可能不太容易理解,所幸简单的命令并不需要用到它,留空就可以了。这里我们来自定义一个可以完成对齐功能的程序。
对齐的mel为:
string $ParCons[] = `parentConstraint`;
delete $ParCons;
这两句mel可以让后选择的物体对齐到先选择的物体上,其实就是简单地利用了父子链接,这里不多解释,我们开始使用proc定义程序。
proc ALT(){
string $ParCons[] = `parentConstraint`;
delete $ParCons;
}
这里程序的名字是可以随意定义的,之后再button中调用时需要用到,注意我们虽然没有行参,仍要写小括号,只是将其留空即可。现在我们将程序的名字ALT加入到button的-c之后,注意需要用引号将其提示为字符串。
最终的mel如下
if(`window -ex "myWin1"`){
deleteUI -window myWin1;
}
window -title "myFirstWin" -wh 300 500 myWin1;
columnLayout -adj 1;
button -l "myButton" -h 20 -c "ALT";
showWindow myWin1;
proc ALT(){
string $ParCons[] = `parentConstraint`;
delete $ParCons;
}
绿色部分为我们的窗口部分,红色使我们定义的程序。这个proc实际上是定义了一个后台的指令,而我们在button中通过-c调用了他,他自动执行这个指令中的命令,也就是具有对齐功能的mel,完成了按钮与程序指令的链接,让这个按钮有了自己的用处。
如何往窗口中添加按钮以及通过按钮执行命令
最后我们可以将这段mel拖到工具架上供日后使用,将来会介绍如何使用mel在maya的菜单中添加自己想要的菜单栏,并为其添加子元素。