自定义 Maya 的脚本编辑器字体
Customize Maya's script editor font
在 Maya 2019 之前,我使用以下脚本来自定义脚本编辑器字体。
from PySide2 import QtGui, QtCore, QtWidgets
def set_font(font='Courier New', size=12):
"""
Sets the style sheet of Maya's script Editor
"""
# Find the script editor widget
app = QtWidgets.QApplication.instance()
win = next(w for w in app.topLevelWidgets() if w.objectName()=='MayaWindow')
# Add a custom property
win.setProperty('maya_ui', 'scriptEditor')
# Apply style sheet
styleSheet = '''
QWidget[maya_ui="scriptEditor"] QTextEdit {
font-family: %s;
font: normal %spx;
}
''' %(font, size)
app.setStyleSheet(styleSheet)
有了这个,我可以在所有选项卡上统一更改脚本编辑器的字体样式和大小。
# this is my current favorite
set_font(font='Consolas', size=20)
在 Maya 2018 和 2019 中,这工作正常。我没有测试过2020,但是在2022和2023它执行没有错误但是没有按照需要改变界面。
问题
自 2019 年以来导致此脚本失败的更改。任何关于如何使这个脚本工作的提示将不胜感激。否则,当我发现问题时,我会post在这里提供解决方案。
我没有完整的答案,但以下似乎可行。一个值得注意的变化是 QTextEdit
似乎已替换为 QPlainTextEdit
,但仅替换并不能解决问题。
但是,以下说明适用于 2022 年之前和之后的 Maya 版本,并且似乎有效。
import maya.cmds as cmds
from PySide2 import QtGui, QtCore, QtWidgets
def set_font(font='Courier New', size=12):
"""
Sets the style sheet of Maya's script Editor
"""
app = QtWidgets.QApplication.instance()
win = None
for w in app.topLevelWidgets():
if "Script Editor" in w.windowTitle():
win = w
break
if win is None:
return
# for Maya 2022 and above
if int(cmds.about(version=True)) >= 2022:
style = '''
QPlainTextEdit {
font-family: %s;
font: normal %dpx;
}
''' % (font, size)
win.setStyleSheet(style)
# for Maya 2020 and older
else:
style = '''
QWidget[maya_ui="scriptEditor"] QTextEdit {
font-family: %s;
font: normal %dpx;
}
''' % (font, size)
win.setProperty('maya_ui', 'scriptEditor')
app.setStyleSheet(style)
set_font(font='Consolas', size=20)
在 Maya 2019 之前,我使用以下脚本来自定义脚本编辑器字体。
from PySide2 import QtGui, QtCore, QtWidgets
def set_font(font='Courier New', size=12):
"""
Sets the style sheet of Maya's script Editor
"""
# Find the script editor widget
app = QtWidgets.QApplication.instance()
win = next(w for w in app.topLevelWidgets() if w.objectName()=='MayaWindow')
# Add a custom property
win.setProperty('maya_ui', 'scriptEditor')
# Apply style sheet
styleSheet = '''
QWidget[maya_ui="scriptEditor"] QTextEdit {
font-family: %s;
font: normal %spx;
}
''' %(font, size)
app.setStyleSheet(styleSheet)
有了这个,我可以在所有选项卡上统一更改脚本编辑器的字体样式和大小。
# this is my current favorite
set_font(font='Consolas', size=20)
在 Maya 2018 和 2019 中,这工作正常。我没有测试过2020,但是在2022和2023它执行没有错误但是没有按照需要改变界面。
问题
自 2019 年以来导致此脚本失败的更改。任何关于如何使这个脚本工作的提示将不胜感激。否则,当我发现问题时,我会post在这里提供解决方案。
我没有完整的答案,但以下似乎可行。一个值得注意的变化是 QTextEdit
似乎已替换为 QPlainTextEdit
,但仅替换并不能解决问题。
但是,以下说明适用于 2022 年之前和之后的 Maya 版本,并且似乎有效。
import maya.cmds as cmds
from PySide2 import QtGui, QtCore, QtWidgets
def set_font(font='Courier New', size=12):
"""
Sets the style sheet of Maya's script Editor
"""
app = QtWidgets.QApplication.instance()
win = None
for w in app.topLevelWidgets():
if "Script Editor" in w.windowTitle():
win = w
break
if win is None:
return
# for Maya 2022 and above
if int(cmds.about(version=True)) >= 2022:
style = '''
QPlainTextEdit {
font-family: %s;
font: normal %dpx;
}
''' % (font, size)
win.setStyleSheet(style)
# for Maya 2020 and older
else:
style = '''
QWidget[maya_ui="scriptEditor"] QTextEdit {
font-family: %s;
font: normal %dpx;
}
''' % (font, size)
win.setProperty('maya_ui', 'scriptEditor')
app.setStyleSheet(style)
set_font(font='Consolas', size=20)