Piszę proste menu narzędziowe dla Mayi i chciałbym przykleić je do granicy panelu modelu (perspektywy).Autodesk Maya zmiana rozmiaru panelu modelu
from PySide import QtCore, QtGui
from maya import OpenMayaUI as omui
from shiboken import wrapInstance
class TestWidget(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent = self.getMayaWindow())
self.setWindowFlags(QtCore.Qt.Tool | QtCore.Qt.FramelessWindowHint)
self.setFixedSize(100, 100)
panelPtr = omui.MQtUtil.findControl('modelPanel4')
panel = wrapInstance(long(panelPtr), QtGui.QWidget)
position = panel.mapToGlobal(panel.pos())
self.move(position.x(), position.y() + panel.geometry().height()/2 - self.geometry().height()/2)
mainLayout = QtGui.QVBoxLayout(self)
button = QtGui.QPushButton('CLOSE')
button.setFixedSize(80, 80)
button.clicked.connect(self.deleteLater)
mainLayout.addWidget(button)
def getMayaWindow(self):
omui.MQtUtil.mainWindow()
ptr = omui.MQtUtil.mainWindow()
return wrapInstance(long(ptr), QtGui.QWidget)
w = TestWidget()
w.show()
Głównym widget jest umieszczony dokładnie tam, gdzie chcę i kiedy zostanie on utworzony (poziomo na lewej stronie panelu modelu w pionie - w środku panelu modelu).
Muszę zmienić położenie odpowiednio podczas zmiany rozmiaru panelu modelu, ale panel modelu nie emituje sygnału resized()
. Byłbym wdzięczny za radę.
W jaki sposób można zamiast tego uzyskać "resized" sygnał z okna nadrzędnego? – mhlester
@mhlester o ile mi wiadomo, główne okno programu Maya lub inne natywne widżety Maya nie emitują żadnych zdarzeń po zmianie rozmiaru. – Kupnu4