Мессинга с интерфейсом Maya может быть трудной задачей, есть два способа сделать это. Прежде всего, необходимо использовать maya.cmds
, чтобы добавить виджеты в пользовательский интерфейс Maya. Второй - обернуть, как и вы, виджет майя в классе Qt.
аналогичный вопрос здесь: How do I parent new, user-created buttons inside the Graph Editor window? Я ответил только maya.cmds
кода и есть другой ответ, который может вас заинтересовать, а также с помощью PySide.
Вот решение:
nbIteration = 0
def getChildren(uiItem, nbIteration):
for childItem in cmds.layout(uiItem, query=True, childArray=True):
try:
print "|___"*nbIteration + childItem
getChildren(uiItem + "|" + childItem, nbIteration+1)
except:
pass
getChildren("MayaWindow|MainChannelsLayersLayout", nbIteration)
Если запустить этот код, это даст вам имя на виджетах, содержащихся в Channel Box/Layer Editor
ChannelButtonForm <-- This is the form containing the 3 buttons on the top-right
|___cbManipsButton
|___cbSpeedButton
|___cbHyperbolicButton
ChannelsLayersPaneLayout <-- This is the layout containing the channel box and the layer editor. A paneLayout has a splitter to resize his childrens.
|___ChannelBoxForm
|___|___menuBarLayout1
|___|___|___frameLayout1
|___|___|___|___mainChannelBox
|___LayerEditorForm
|___|___DisplayLayerUITabLayout
|___|___|___DisplayLayerTab
|___|___|___|___formLayout3
В зависимости от того, где вы хотите, чтобы ваши кнопки на вы должны выбрать макет в качестве родителя для своей кнопки.
В этом случае я помещаю кнопку в левую верхнюю часть редактора Channel Box/Layer Editor на том же уровне, что и 3 кнопки checkboxButtons.
import maya.cmds as cmds
cmds.button("DrHaze_NewButton", l="HELLO", p="MayaWindow|MainChannelsLayersLayout|ChannelButtonForm")
Как вы не сказали нам, где вы хотите, чтобы ваша кнопка для размещения, вы должны изменить свой вопрос, если вы хотите что-то более подходящим.
Всего одна кнопка? Где вы хотите, чтобы кнопка отображалась? В верхней части окна канала или где-то на краю? –