[Maya] ファイルをWindowにDrag&Dropする[PySide]

まだまだ続くPySide。

Eventがわかったので、今度はファイルをUIにドラッグ&ドロップしてファイル名を取得するのをやってみました。

UIファイルは → こちら

毎度MayaUI取得やらgetWidget書くのもあれなので、そこだけ分けました。
分けたのは これ

ドラッグ&ドロップする場合の注意点は2つ。

1つ目がWidget側のドロップを許可する setAcceptDrops()をTrueにすること。
2つめがdragEnterEventで、event.accept()すること。


event.accept()してあげないと、禁止マークのままドロップすることができません。

ここで地味に苦戦しました(´・ω・)

dragEnterEvent()はドラッグしてUI上に入ってきた時に発生するイベントになります。
UIに入ると、ドラッグされているものがMIMEで渡されます。
hasUrlsは、ドラッグされたものがファイルだった場合は、Trueを返すメソッドなので
ドラッグされたものがファイルなら、ドロップを許可するという意味になります。
ドロップされたファイルは、 CtCore.QUrl オブジェクト。
Listに入れるには unicodeまたはstringなので、 .path() または .toString()を使用するとOK。
日本語もいけました。
ただ、ファイル名の頭に / が入ってしまうので(これは何故に?)置換で消してます

最初はめんどくせー('A)
と思ってたPySideでUI作りも、分かると楽ちんで良いですね。

次は、そろそろ基本的なことは押さえられた気がするので、
覚えた事でなにかMayaの簡単なツールでも作ってみようかなーと思います。

[Maya] ファイルをWindowにDrag&Dropする[PySide]」への2件のフィードバック

  1. i.path() でなく i.toLocalFile() ではないかと。
    url の場合は i.toString() のようでした。

    写真綺麗ですね〜。とても和みました。 🙂

コメントを残す

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


*