python删除键不能用_为什么deleteUI不能在Maya Python中使用此脚本?

使用对Maya gui小部件的字符串引用时必须小心,不能保证获得所需的名称。因此,即使你的代码试图创建一个名为“X”的窗口,你可能会得到一个名为“X1”的窗口,如果你把引用硬编码了,你永远找不到“X1”

在这种情况下,正确的方法是在创建窗口时在变量中捕获窗口的名称,然后使用保存的名称。您可以非常优雅地使用闭包(closure)来实现这一点:python特性允许函数“捕捉”声明时出现的变量的值。下面是一个非常基本的示例,它使用闭包而忽略窗口ID:import maya.cmds as cmds

def create_window():

window = cmds.window(title='Main Window')

column = cmds.columnLayout()

button = cmds.button("Delete me")

def close_handler(*_):

cmds.deleteUI(window) # 'window' is captured by the closure

cmds.button(button, e=True, command = close_handler)

cmds.showWindow(window)

return window

create_window()

如果您想记住主窗口的实际id是什么,只需存储“create_window”的结果即可。考虑到在确保始终知道硬编码UI项的正确路径名时会遇到很多麻烦,因此很少值得这样做。在

您可以而且应该扩展闭包的使用,以处理UI的各个部分之间的其他类型的通信。大多数时候,这比尝试用硬编码字符串来管理它更容易,也不容易出现bug。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值