UI関連 ウィンドウ(ダイアログ)をチャンと閉じる


たまにやってくるスクリプトのお勉強会

今日のメモは既に開いていたウィンドウ(ダイアログ)を閉じる方法。

自前のツールなどでは今まで下の様な感じで
既に開いていたウィンドウ(ダイアログ)をtryを使って強引に閉じていた。

これはあまりイケてないので、
ちゃんとした方法に書き換えるとこうなる。
UIAccssorを使ってダイアログを取得して閉じる感じ。

ちなみに、この方法だとmaxscriptで作ったdaialogと
Pysideで作ったウィンドウウィジット両方につかえる。

 

 

pythonというか、PySide(PySide2)でやるならば・・・

見たいな感じで書けばいい。

ただし!
これはあくまでも閉じる(非表示になる)だけで
ウィンドウ

ウィジット自体は破棄されていない。

破棄するためには、ウィンドウが閉じた際のイベントで破棄を実行させる。
まとめて書くとこんな感じ。

こんな感じ。

ミソはウィンドウのcloseEventをオーバーライドして
そこにself.deleteLater()を追加してる部分。

これでwindowが閉じた際に自分自身を破棄しに行くので
windowが延々と残り続けることがない。

たぶんMayaでも同じような感じになると思う。
もしくは、ウィンドウのインスタンスを作成時にバッティングを確認して
既にウィンドウウィジットがあればソレを表示するか破棄してもいいかも。
結構色んな方法がありそう。
ちなみに破棄する際はparentを切ってから破棄すること。

 

と言うことで今日のメモでした~。

最近色んな言語で色んなUI作ってるからすごい面倒・・・。
もうpythonで一本化したいよ・・・

Leave a comment

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