Python PySideでMaxのUIを作ってみる


本腰を入れてMaxでPythonをいじってみようと
とりあえずUIの作成を色々とお試し中。

まず、超簡単にUIを作ってみる。

関連記事はデジフロさんがいっぱい出してくださっていて
めちゃくちゃ勉強になる。

参考にさせていただきました。
ありがとうございます!

【3dsMAX】MAXScriptでPythonつかってみた part02【PySide:友愛編】

 

で、自分なりに一から書いてみた。
こんな感じ。

これをそのままmax上で実行するとこんな感じ。

 

 

よしよし、チャンと動いてくれてるっぽい。
実はこのコード、そのまんまVSコードで実行すると・・・

 

 

なんとそのまま使えた。
おお!これは便利便利!

 

これならpy2exeでexe化も出来そうじゃないか!
UIだけならマルチプラットフォームいけそうですぞ!

と、はしゃいでいたのはココまで・・・

ココからMax2017とMax2018での仕様の違いに
頭を抱える事になる。
2017はPySideで2018はPySide2という仕様変更によって
一工夫加えないと使えないことが判明。

まぁ、その話はまた今度。

 

 

さっきのコードにすこし味足しをしてみる。

単純に関数化してみただけ。
ちなみに window.setWindowFlags(Qt.WindowStaysOnTopHint) は
ウィンドウを最前にするという意味。
QApplication(sys.argv) の引数にsys.argvに下のはカッコ付けたかったから。
意味は無い。実行時に引数を受け取りますって意味。

これに更に味付けを加えてみる。

 

 

今度はクラス化、
ちょっとだけ複雑になった
が、やっていることと結果は同じ。

 

 

よしよしチャンとでてるぞ。

で、味噌は super(main_ui, self).__init__() の部分。
なにかと言うとこれはクラスを継承している部分。
分かりやすい解説はコチラで紹介されていたので参考に。

https://qiita.com/Kodaira_/items/42dfe18c81af98bf0db3

https://www.lifewithpython.com/2014/01/python-super-function.html

簡単に言ってしまえばQMainWindowクラスを継承してるってことになる。

 

クラス化することで後々の拡張性を持たせることが出来そう。
そのあたりは今度のお楽しみ。

 

以上メモでした。

Leave a comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください