Mayaメインウィンドウの後ろへ行くのを回避(メインウィンドウparent)
メインウィンドウへparentし、Mayaウィンドウの後ろへ行くのを回避します。
参考:たっきゅんさん書籍 ガチンコツール開発部 の、チャプター7の7.8.2(p112~113)
qt.py
| # -*- coding: utf-8 -*-
from maya import OpenMayaUI, cmds
from PySide2 import QtWidgets, QtCore, QtGui
import shiboken2
# OpenMayaUIに、Qtに関する補助機能が用意されています。これはPythonからでも利用できますが、「C++」の
# 「ポインタ※」という機能がPython には無いため、そのままでは使用できません。そこで、C++ で作られた機能
# をPythonから使えるようにしてくれる、PySide付属のモジュール「shiboken」を使用して対応していきます。
# 「shiboken」の中には、「wrapInstance」という機能があり、C++ のポインタの情報をPython で扱えるデータ
# に変換してくれます。コレを使ってポインタからQWidget に変換したデータを、呼び出された場所に「return」を
# 使用して返します。
# 「ポインタ」とは、データがメモリのどこに保存されているか、住所を表すものです。
def getMayaWindow(): # Maya のウィンドウを取得する関数です
"""
Get the main Maya window as a QtGui.QMainWindow instance
@return: QtGui.QMainWindow instance of the top level Maya windows
"""
ptr = OpenMayaUI.MQtUtil.mainWindow()
if ptr is not None:
widget = shiboken2.wrapInstance(long(ptr), QtWidgets.QMainWindow)
return widget
|
以上の、コードを、
- ファイル内に記述するか、
- モジュールとするか、
どちらかのやりかたに統一すると良いかもしれない。
もし、モジュールとしたいなら、
例えば、
lib フォルダ
├ __init__.py
└ qt.py
として、
とファイル内に記述が必要である。
最終更新日:
2024年6月21日 14:58:09