我正在做的是获取并存储用户移动的对象的变换,然后允许用户单击按钮返回用户设置的值。在
到目前为止,我已经找到了如何获取属性并设置它。但是,我只能得到和设置一次。有没有一种方法可以在运行一次的脚本中多次执行此操作?或者我必须继续重新运行脚本吗?对我来说,这是一个至关重要的问题。在
基本上:
btn1 = button(label="Get x Shape", parent = layout, command ='GetPressed()')
btn2 = button(label="Set x Shape", parent = layout, command ='SetPressed()')
def GetPressed():
print gx #to see value
gx = PyNode( 'object').tx.get() #to get the attr
def SetPressed():
PyNode('object').tx.set(gx) #set the attr???
我不是百分之百地知道如何正确地做这件事,或者我是否走对了路?在
谢谢
您没有传递变量
gx
,因此SetPressed()
将失败,如果您在运行整个过程之前尝试在侦听器中直接执行gx = ...
行,那么它可能会偶尔运行,但它会不稳定)。您需要在您的SetPressed()
函数中提供一个值,以便set操作可以使用。在作为旁白,使用字符串名称来调用按钮函数不是一个好方法,当从侦听器执行代码时,代码可以工作,但是如果绑定到函数中,则代码将不起作用:当为函数使用字符串名称时,Maya只会在它们位于侦听器命令所在的全局名称空间中找到它们,但很难从中访问它们其他功能。在
下面是一个最小化的示例,说明如何通过将所有函数和变量保留在另一个函数中来实现这一点:
一般来说,在做mayagui时,这种事情是最棘手的一点,你需要确保所有函数和处理程序等都能看到对方并能共享信息。在本例中,函数通过在UI存在后定义处理程序来共享信息,这样它们就可以继承UI片段的名称并知道要处理什么。还有其他方法可以做到这一点(类是最复杂和最复杂的),但这是最简单的方法。关于如何做到这一点还有更深入的研究here
相关问题 更多 >
编程相关推荐