【Maya】PySideで作ったWindowのアレコレ
code:python
# -*- coding: utf-8 -*-
from Qt import QtCompat, QtCore, QtWidgets
from maya.app.general.mayaMixin import MayaQWidgetBaseMixin
try:
MAYA_WINDOW = QtCompat.wrapInstance(long(omui.MQtUtil.mainWindow()), QtWidgets.QWidget)
except:
MAYA_WINDOW = None
class Window(MayaQWidgetBaseMixin, QtWidgets.QMainWindow):
window_name = 'test_window'
def __init__(self):
super(Window, self).__init__(parent=MAYA_WINDOW)
self._makeMayaStandaloneWindow()
self.setWindowTitle(self.window_name)
self.setWindowFlags(QtCore.Qt.Window)
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.setProperty("saveWindowPref", True)
self.setObjectName(self.window_name)
Windowのdelete
PySideで作ったGUIは何もしてないとcloseしてもdeleteはされない
QtCore.Qt.WA_DeleteOnCloseをWindowオブジェクトにsetAttributeすることでclose時にdeleteされるようになる
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
Windowの位置・サイズの保存と復元機能
WindowオブジェクトにsetObjectNameをしてsetProperty("saveWindowPref", True)としておくとWindowをcloseしたときのサイズ・位置がwindowPrefs.melに保存されるようになり、次回show時に復元されるようになる
self.setObjectName(self.window_name)
self.setProperty("saveWindowPref", True)
Windowの見た目
よくある見た目のWindowになる
self.setWindowFlags(QtCore.Qt.Window)