Maya2017もリリースされて、はや1年がたとうとしておりますが、ぼちぼちツールもMaya2017に対応させていこうかと考えております。
そこで問題になるのが、、、
「PySideからPySide2への移行」
Qt4からQt5に変更された余波ですね。。。単に名前が変わるだけならいいのですが、UIのモジュールがQtGuiからQtWidgetsに変わったり色々めんどくさい(;´∀`)
ツールを「Maya2017版」と「Maya2014-2016版」の2つにするのもアレだし、アチラコチラに「if文」を使って分岐させるのもアレだし、、、
なんとかなりませんか、、、(切実)
そういえば!
Susanooを作っている時はQtCreatorを使って、C++でQtを使用していたのですがネームスペースなしで「QMainWindow」と、QtのClassを使っていました。
っということは、、、
QtのClassは名前が重複していない!?┏(✦ω✦ ┓)┓
ものは試しに
Pythonの伝家の宝刀「from import *」を使って、PySideのモジュールを展開してしまえば、QtCreatorの時のようにできるのではないかっと、こんなんでいいのだろうか、、、っと恐る恐るやってみました。
「PySideWrap.py」というラッパーを用意して、コードは以下の通りです。
# -*- coding: utf-8 -*- #------------------------------------------------------------------------------- # PySide Wrapper #------------------------------------------------------------------------------- try: # Check import PySide from PySide.QtCore import * from PySide.QtDeclarative import * from PySide.QtGui import * from PySide.QtHelp import * from PySide.QtMultimedia import * from PySide.QtNetwork import * from PySide.QtOpenGL import * from PySide.QtScript import * from PySide.QtScriptTools import * from PySide.QtSql import * from PySide.QtSvg import * from PySide.QtTest import * from PySide.QtUiTools import * from PySide.QtWebKit import * from PySide.QtXml import * from PySide.QtXmlPatterns import * from PySide.phonon import * import shiboken except ImportError: try: # Check import PySide2 from PySide2.QtCore import * from PySide2.QtGui import * from PySide2.QtHelp import * from PySide2.QtMultimedia import * from PySide2.QtNetwork import * from PySide2.QtPrintSupport import * from PySide2.QtQml import * from PySide2.QtQuick import * from PySide2.QtQuickWidgets import * from PySide2.QtScript import * from PySide2.QtSql import * from PySide2.QtSvg import * from PySide2.QtTest import * from PySide2.QtUiTools import * from PySide2.QtWebChannel import * from PySide2.QtWebKit import * from PySide2.QtWebKitWidgets import * from PySide2.QtWebSockets import * from PySide2.QtWidgets import * from PySide2.QtXml import * from PySide2.QtXmlPatterns import * import shiboken2 as shiboken except ImportError: # Failed import to PySide and PySide2. raise ImportError('No module named PySide and PySide2.')
まず、「try文」を使用して、「PySide」のモジュールが読み込めるかテストします。このimportに失敗したら、次は「PySide2」を確認っという流れです。「shiboken2」はとりあえず「shiboken」として使えるように「as」を使いました。
Maya2017での確認
シンプルにQMainWindowを使ってウインドウを作ってみました。
import PySideWrap window = PySideWrap.QMainWindow() window.show()
importですべてのモジュールを読み込んでいるせいか、ちょっとカクついたけど無事ウインドウが作れました。
Maya2014での確認
こちらも同じコードで無事にウインドウが作れました。
ちょっと怖い部分もありますが、ひとまずこれでやってみます!∠( ゚д゚)/