Maya - 如何在重命名场景后更新菜单栏上显示的文件名

Maya - How to update file name displayed on menu bar after renaming the scene

使用这个命令:

cmds.file(rename = "newName.mb")

不在 window 顶部的菜单栏中显示新名称。它仍然显示旧名称,但添加了一个星号 * 以表明它已被更改。

问题是这让用户感到困惑。该文件将保存在不同的路径中,但你不知道,直到你这样做。

如果重命名没有,我如何更新顶部显示的名称?

您可以使用 PySide 来实现此目的,它自 2014 版以来随 Maya 一起原生提供。您可以使用 Pyside 自定义 Maya 中的几乎所有内容。

这是更改 window 标题的代码:

import maya.cmds as cmds
from PySide import QtCore, QtGui
from maya import OpenMayaUI as omui
from shiboken import wrapInstance

def getMayaWindow():
    omui.MQtUtil.mainWindow()    
    ptr = omui.MQtUtil.mainWindow()
    return wrapInstance(long(ptr), QtGui.QWidget)

newPath = r"C:\Users\pfruchet\Desktop\NewSceneName.ma"

mayaWindow = getMayaWindow()

print mayaWindow.windowTitle() #Prints the window title with your original scene path
cmds.file(rename = newPath)
print mayaWindow.windowTitle() #Prints the window title with your original scene path
print cmds.file(query=True, sn=True) #But Prints C:/Users/pfruchet/Desktop/NewSceneName.ma ---> Scene name changed but not updated in window title

mayaWindow.setWindowTitle(r"Autodesk Maya 2014: " + newPath) #here is the magic
print mayaWindow.windowTitle() #Prints Autodesk Maya 2014: C:\Users\pfruchet\Desktop\NewSceneName.ma
mayaWindow.setWindowModified(False)

最后一行允许您显示或隐藏文件路径后的“*”。

输出:

Autodesk Maya 2014: C:\Users\pfruchet\Desktop\OriginalScene.ma
Autodesk Maya 2014: C:\Users\pfruchet\Desktop\OriginalScene.ma
C:/Users/pfruchet/Desktop/NewSceneName.ma
Autodesk Maya 2014: C:\Users\pfruchet\Desktop\NewSceneName.ma

部分参考资料:

Autodesk doc: Working with PySide in Maya 如何通过添加可怕的样式表来破坏 Maya。

Pyside doc: QWidget 如果你想尝试其他东西(显然你可以更改 window 图标)

我通过更改选择来处理这个问题,这会强制 Maya 更新标题栏(从而显示新文件名):

cmds.file(rename = "newName.mb")
cur_selection = cmds.ls(sl=True)  # Save current selection
cmds.select('renderPartition')  # Select something (anything) the user doesn't already have selected
cmds.select(cur_selection)  # Restore user's selection