自前でクロスプラットフォーム対応してたのにこの機能Qtにあったのかよ!な小ネタです。
クリップボードにテキストをコピーする
今編集してるシーンのパスをささっと共有したいなーというときクリップボードにコピーできると便利ですが、自前でやる場合subprocess使うことになるしWindowsとMacで使うコマンドが違って面倒…。
でも実は1つのコードで出来るんです。そう、Qtならね!(もっと早く知りたかった)
以下のようなコードを用意してcmds.file(q=True, sn=True)とかを引数に渡してやるだけです。かんたん。
Maya2016以前(PySide)
from PySide import QtGui def copy_to_clipboard(text): cb = QtGui.QApplication.clipboard() cb.setText(text)
Maya2017以降(PySide2)
from PySide2 import QtWidgets def copy_to_clipboard(text): cb = QtWidgets.QApplication.clipboard() cb.setText(text)
Qt.py版
from Qt import QtWidgets def copy_to_clipboard(text): cb = QtWidgets.QApplication.clipboard() cb.setText(text)
Qt.pyについては以下をご参照ください。
tm8r.hateblo.jp
指定フォルダをFinder(エクスプローラー)で開く
Maya内に自前のファイルエクスプローラー的なものを実装したものの、そこで開いているフォルダをさくっとFinderで開きたいみたいなことがあると思うんですが、これもクリップボード同様にsubprocessごにょったり、またWinとMacで別のコード書いたりしないといけないので大変面倒です。
でも実は(略)
Maya2016以前(PySide)
from PySide import QtGui def reveal_in_finder(path): QtGui.QDesktopServices.openUrl("file:///" + path)
Maya2017以降(PySide2)
from PySide2 import QtGui def reveal_in_finder(path): QtGui.QDesktopServices.openUrl("file:///" + path)
Qt.py版
from Qt import QtGui def reveal_in_finder(path): QtGui.QDesktopServices.openUrl("file:///" + path)
おわり
よくよく考えたらQt自体がクロスプラットフォームなフレームワークなので、こういった汎用的な機能は色々持ってるんでしょうけども、どうしてもUI構築の方にばっかり気を取られてそれ以外の機能を探すのを忘れがち。
暇な時にリファレンスを眺めると色んな発見がありそうなので、また何か見つけたら書きます…!たぶん…!