MAYA windowをリセットするスクリプト(Qt対応)


import maya.cmds as cmds
import maya.OpenMayaUI as omui
from PySide2.QtWidgets import QApplication, QMainWindow
import shiboken2
import ctypes

def get_screen_resolution():
    user32 = ctypes.windll.user32
    screen_width = user32.GetSystemMetrics(0)
    screen_height = user32.GetSystemMetrics(1)
    return screen_width/2, screen_height/2

def set_qt_window(w, h):
    # Mayaのメインウィンドウを取得
    main_window_ptr = omui.MQtUtil.mainWindow()
    main_window = shiboken2.wrapInstance(int(main_window_ptr), QMainWindow)
    
    # 開いている全てのウィンドウを取得
    open_windows = QApplication.topLevelWidgets()
    for window in open_windows:
        if isinstance(window, QMainWindow):
            print(window.objectName())
    
            # ウィンドウの位置を取得
            print(window.pos())
            
            # ウィンドウの位置を設定 (例: (100, 200) に設定)
            window.move(w, h)

def setWinPos(w,h):
	for i in cmds.lsUI(windows=1):
		if i == 'MayaWindow' or i == 'nexFloatWindow':
			continue
		cmds.window(i,e=1,tlc=(w,h))

w, h = get_screen_resolution()

w /= 2
h /= 2
print(w, h)
set_qt_window(w, h)
setWinPos(h, w)
#========================================
# 画面外にウィンドウにあるとき、指定位置に移動させる。
# setWinPos(0,0)
#========================================

si weight editorの画面外に行った時に困ったので作った
他の人のコードも入っています。

自己責任でお願いします。

いいなと思ったら応援しよう!