Поскольку интерфейс Maya использует Qt
, вы можете использовать мощность PySide
для настройки любого виджета, который вы хотите. Обычно единственная сложная задача - найти нужный виджет для изменения.
Вот как можно настроить редактор сценариев, чтобы он получил желтую рамку:
import shiboken2
from maya import cmds
from maya import OpenMayaUI
from PySide2 import QtWidgets
panels = cmds.getPanel(scriptType="scriptEditorPanel") # Get all script editor panel names.
if panels: # Make sure one actually exists!
script_editor_ptr = OpenMayaUI.MQtUtil.findControl(panels[0]) # Grab its pointer with its internal name.
script_editor = shiboken2.wrapInstance(long(script_editor_ptr), QtWidgets.QWidget) # Convert pointer to a QtWidgets.QWidget
editor_win = script_editor.parent().parent().parent().parent() # Not very pretty but found that this was the best object to color with. Needed to traverse up its parents.
editor_win.setObjectName("scriptEditorFramePanel") # This object originally had no internal name, so let's set one.
editor_win.setStyleSheet("#scriptEditorFramePanel {border: 3px solid rgb(150, 150, 45);}") # Set its styleSheet with its internal name so that it doesn't effect any of its children.
OpenMayaUI.MQtUtil
дает вам потрясающая возможность найти любой элемент управления по имени, поэтому, если вы знаете имя виджета, который хотите изменить, вы можете его найти (иногда сложно найти его!). В этом случае мне пришлось пройтись по нескольким родителям, чтобы найти того, кто работал лучше всего, чтобы очертить все окно. Вы можете поиграть с этим и покрасить, скажем, только текстовую область. А поскольку это таблицы стилей PySide
, вы можете делать все, что душе угодно, например, изменять цвет фона, толщину контуров и т. Д.
Поскольку мы влияем только на таблицу стилей это также не сохранит с настройками и вернется к тому, что было в новом сеансе.
Надеюсь, это поможет.