画面外のウィンドウを画面内に移動
リモートワークで複数種のレイアウトのウィンドウを行き来してたらアトリビュートエディタが画面外に消えてしまったのでそのための対応。
特に移動したいもののフィルタリングとかしてなく、すべてのウィンドウを移動するので環境によっては弊害がでてしまうかも。
# Maya 消えたウィンドウの呼び出し from PySide2 import QtCore, QtWidgets, QtGui active_window = QtWidgets.QApplication.activeWindow() children = active_window.children() for child in children: if type(child) == QtWidgets.QWidget: child.move(0,0)
補足1・ウィンドウ種別ごとのフィルタリング
windowごとにフィルタリングして動作させたい場合はtitleで判定するしかないっぽい?
object name はついてるもとのついてないものがあったりする。(大体ついてない)
継承クラス用意したりはもちろんしてくれてない。
from __future__ import unicode_literals from PySide2 import QtCore, QtWidgets, QtGui active_window = QtWidgets.QApplication.activeWindow() children = active_window.children() for child in children: if type(child) == QtWidgets.QWidget: print "-"*20 print "object name: {}".format(child.objectName()) print "widget class: {}".format(type(child)) print "window title : {}".format(child.windowTitle())
上述のようにTitleででとるのが妥当な予感
補足2・cmdsでアクティブなウィンドウ取れなかった
front_window = cmds.window(frontWindow=True)
cmds.showWindow(front_window)
てっきり上記のcmdsだけでアクティブウィンドウを取得できると思ったら自分の環境(Maya2019)だと正常に取得できなかった。
(昔この方法で取得した記憶があるのでバージョンのバグだと思う。詳細は調べてない)