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
使用这个命令:
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