玛雅关窗标志

2024-10-01 09:15:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Maya文档中的命令从头创建了一个ui。 我编写的以下函数适用于两种情况:

  1. 当用户点击了另一个按钮Import时,它会像代码中写的一样,然后用下面的函数关闭它(参见readFile函数)
  2. 当用户点击按钮,关闭用户界面而不运行任何东西。在

在我的脚本中,为了满足以上两个场景,我写了如下内容,其中closeWindow适合场景1,cancelWindow适合场景2

def ui(self):
    ...
    cancelButton = cmds.button( label='Cancel', command=self.cancelWindow, width=150, height=35)

def closeWindow(self, *args):
    cmds.deleteUI(self.window, window=True)

def cancelWindow(self, *args):
    cmds.delete(camSel[0])
    cmds.deleteUI(self.window, window=True)

def readFile(self, *args):
    ...
    self.closeWindow()

因此,是否可以通过组合上述2个(自动+手动)来创建类似于PyQt(clicked()、returnPressed()等)的信号,看看deleteUI命令的用法是相同的吗?在


Tags: 函数用户命令selfuidef场景args
1条回答
网友
1楼 · 发布于 2024-10-01 09:15:35

默认Maya UI仅提供回调,不提供信号。您可以通过调用事件处理程序对象而不是函数来创建一种“伪信号”。在这种情况下,按钮只知道“我启动了按钮事件”,处理程序可以根据需要调用任意多个函数。在

class Handler(object):

    def __init__(self):
        self.handlers = []

    def add_handler (self, func):
        self.handlers.append(func)

    def __call__(self, *args, **kwargs):
        for eachfunc in handler:
            eachfunc(*args, **kwargs)

 hndl = Handler()
 hndl.add_handler(function1)  # do some ui work...
 hndl.add_handler(function2)  # do some scene work...
 hndl.add_handler(function3)  # do something over network, etc....

 b = cmds.button('twoFunctions', c = Hndl)

在一个大型复杂的用户界面中,这是一个很好的方法来保持次要的事情,如按钮高亮和焦点的变化,从重要的东西,如改变场景分开。在你的应用程序中,这几乎肯定是过度使用了。您在“关闭”和“取消”之间只共享了一行,这还不错:)

这里是more background on on pseudo-events in maya gui。在

也可以直接使用Maya的QT来获取关闭事件。。。又一次,似乎有点过分了。更多here

相关问题 更多 >