![](../../images/Updated _Odd-to-Even.png)
PyQt5 または PySide2 を使用して Maya のユーザ インタフェースをカスタマイズする場合は、Maya のメイン ウィンドウなど、既存の Maya ウィジェットの下に自分のウィジェットをペアレント化してください。ウィジェットがペアレント化されていないと、ウィジェットへのリファレンスが維持されていない場合、Python インタプリタのガベージ コレクターによってウィジェットが破棄される場合があります。
このベスト プラクティスのコード例を次に示します。PySide2 の代わりに、PyQt5 モジュールを読み込んだ場合も、このコードは機能することに注意してください。
from maya import OpenMayaUI as omui
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
from PySide2 import __version__
from shiboken2 import wrapInstance
mayaMainWindowPtr = omui.MQtUtil.mainWindow()
mayaMainWindow= wrapInstance(long(mayaMainWindowPtr), QWidget)
# WORKS: Widget is fine
hello = QLabel("Hello, World", parent=mayaMainWindow)
hello.setObjectName('MyLabel')
hello.setWindowFlags(Qt.Window) # Make this widget a standalone window even though it is parented
hello.show()
hello = None # the "hello" widget is parented, so it will not be destroyed.
# BROKEN: Widget is destroyed
hello = QLabel("Hello, World", parent=None)
hello.setObjectName('MyLabel')
hello.show()
hello = None # the "hello" widget is not parented, so it will be destroyed.
Maya ワークスペースと互換性のある PyQt ウィジェットおよび PySide ウィジェットの記述方法の詳細については、「ワークスペース コントロールを記述する」を参照してください。