[PySide] MayaShelfにPySideのオブジェクトを配置する おまけ

ShelfにPySideのオブジェクトを配置するメリットというか利点になるものはないだろうかと考えていて思いついたのが、ボタンを押すとメニューが表示される機能。
Menuに追加しても良いのですが、それだと多階層になればなるほどカオス化しやすい。
かといって細かいコマンドをShelfにがすがす追加すると瞬間的にShelfが埋まってしまう…ので、
間をとって、シェルフボタン+Menuだと便利じゃね?と、早速やり方を調べてみました。

コードは前回とほぼ共通で、+α メニューを作成するあたりが増えています。
メニュー作成方法は

1 Actionを作成する(Menuの項目)
2 QMenuオブジェクトを作る
3 QMenuにActionを登録
4 表示

が、基本パターンです。
表示方法は show() または popup() のいずれか。
popupの場合は、狙った位置にメニューを表示することが出来ます。
今回はコレを利用して、マウスのカーソル位置を取得して、カーソルの位置にメニューを表示させています。
メニューをクリックしたときに実行するコマンドは、 QActionのtriggered=XXXX で指定します。
最後に、Shelf上に配置したボタンとボタンを押したときの関数をconnectでつなげて完了。

clickMenu

こんな感じに。
これはなかなか使えそう

コメントを残す

メールアドレスが公開されることはありません。


*