from PySide2 import QtWidgets, QtCore
from shiboken2 import wrapInstance
import maya.OpenMayaUI as omUI
import pymel.core as pm
def dockable_window(window_class):
main_control = pm.workspaceControl(window_class.ID)
win_ptr = omUI.MQtUtil.findControl(window_class.ID)
control_wrap = wrapInstance(int(win_ptr), QtWidgets.QWidget)
control_wrap.setAttribute(QtCore.Qt.WA_DeleteOnClose)
win = window_class(control_wrap)
control_wrap.destroyed.connect(win.close)
class MyWindow(QtWidgets.QMainWindow):
ID = 'testing'
def __init__(self, parent, *args, **kwargs):
QtWidgets.QMainWindow.__init__(self, parent)
#Create a button that will show the geometry when clicked
b = QtWidgets.QPushButton('test')
b.clicked.connect(self.show_actual_geometry)
parent.layout().addWidget(b)
def show_actual_geometry(self):
"""This will work until it is called during closeEvent."""
print self.parent().parent().parent().parent().parent().geometry()
def closeEvent(self, event):
print self.show_actual_geometry()
QtWidgets.QMainWindow.closeEvent(self, event)
dockable_window(MyWindow)