【Maya2018 – Bug】setWindowFlagsがうまく機能しない
MayaQWidgetBaseMixinを使用するとsetWindowFlagsが全く反映されないという問題があるみたいで調べていました。MayaQWidgetBaseMixinではなくshibokenを使うべきなんかな
— 天埜零士@低音 (@rateionn) October 22, 2017
前者だとsetWindowFlagsが全く反映されない
調べてみるとMaya2017update4以降うまく機能しないようです。
上のコードを使うとフレームレスでwindowが表示されるはずですが、試しにMaya2018で実行してみると下の画像のようにsetWindowFlagsが機能していません。
C:\Program Files\Autodesk\Maya2018\Python\Lib\site-packages\maya\app\general\mayaMixin.py 上のpathのコードの中身を見てみました。
確認するのはMayaQWidgetBaseMixinクラスです このクラスは初期化中に Maya Qt ウィジェットの一般的なアクションを行う際に使用します 詳しく見ていくと MayaのMainWindowの子供にしてStandalone Windowを作成する_makeMayaStandaloneWindow()が読み込まれていません MayaのMainWindowで子供のプロセスは、インスタンス変数が有効範囲外になったときにQWidgetが自動的に破棄されないようにします この変数を読み込まれてないのでうまく機能していないようです。
mayaMixin.pyの98行目あたりに上のコードを記述します。 記述したコードはC:\Program Files\Autodesk\Maya2018\Python\Lib\site-packages\maya\app\general\mayaMixin.pyに保存するのではなくドキュメントのscriptフォルダや任意のフォルダに保存し上書きして実行できるようにすることをおすすめします 次に任意のドキュメントから読み込めるようコードを書き換えます。
今回はドキュメントのscriptフォルダに入れた過程でコードを組んでいます。
下の画像のようにうまく実行できていればbugの修正ができています
個人的な意見ですがMayaQWidgetBaseMixinはバージョンごとに更新が入っているためバージョンに互換性を持たせることを考えるのであればshibokenを使う従来の方法が無難かなーと思います
ディスカッション
コメント一覧
まだ、コメントがありません