忍者ブログ

ちょびちょびMayaPython

Autodesk Maya中心にPythonをしていきます。 自分の復習を兼ねて自作のscriptなどを中心に公開していく予定です

【PySide2】WindowをmayaWindowの後ろに行かせない方法いろいろ

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

【PySide2】WindowをmayaWindowの後ろに行かせない方法いろいろ

WindowをmayaWindowの後ろに行かせない方法いろいろ
PyQtやPySideを使用してウィジェットを制作した場合、
自分の制作したウィジェットがMayaの後ろに行ってしまったりすることが多々あります。
それを防ぐためにMayaのメインウィンドウに自分のウィジェットをペアレント化して防ぐのですが
従来のshibokenを使用した方法とMayaQWidgetBaseMixinを使った場合の
2017とそれ以前のバージョンで試してみました。

shibokenを使った方法

Maya2016.5以前
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import shiboken
from PySide.QtCore import *
from PySide.QtGui import *
from maya import OpenMayaUI
ptr = OpenMayaUI.MQtUtil.mainWindow()
parent = shiboken.wrapInstance(long(ptr), QWidget)
cw = QWidget()#CentralWidgetの設定用
class GUI(QMainWindow):
    def __init__(self):
        super(GUI, self).__init__()
        self.initUI()
 
    def initUI(self):
        btn = QPushButton("OK",cw)
        btn.setGeometry(50, 25, 100, 25)
        
        self.setWindowTitle('GUI')
        self.setGeometry(200, 300, 200, 100)
        self.setCentralWidget(cw)
        self.show()
        
def main():
    app = QApplication.instance()
    ex = GUI()
    sys.exit()
    app.exec_()
if __name__ == '__main__':
    main()


Maya2017
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import shiboken2
from PySide2.QtWidgets import *
from PySide2.QtGui import *
from maya import OpenMayaUI
ptr = OpenMayaUI.MQtUtil.mainWindow()
parent = shiboken2.wrapInstance(long(ptr), QWidget)
cw = QWidget()#CentralWidgetの設定用
class GUI(QMainWindow):
    def __init__(self):
        super(GUI, self).__init__(parent)
        self.initUI()
 
    def initUI(self):
        btn = QPushButton("OK",cw)
        btn.setGeometry(50, 25, 100, 25)
        
        self.setWindowTitle('GUI')
        self.setGeometry(200, 300, 200, 100)
        self.setCentralWidget(cw)
        self.show()
        
def main():
    app = QApplication.instance()
    ex = GUI()
    sys.exit()
    app.exec_()
if __name__ == '__main__':
    main()
shibokenを使わない方法
2015年以降

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from PySide.QtCore import *
from PySide.QtGui import *
from maya.app.general.mayaMixin import MayaQWidgetBaseMixin
class GUI(MayaQWidgetBaseMixin, QWidget):
    
    def __init__(self, parent=None):
        super(GUI, self).__init__(parent=parent)
        self.initUI()
 
    def initUI(self):
        btn = QPushButton("OK",self)
        btn.setGeometry(50, 25, 100, 25)
        
        self.setWindowTitle('GUI')
        self.setGeometry(200, 300, 200, 100)
        self.show()
      
def main():
    app = QApplication.instance()
    ex = GUI()
    sys.exit()
    app.exec_()
if __name__ == '__main__':
    main()


とりあえずこれでいけます!

拍手[4回]

PR

コメント

プロフィール

HN:
ちょび雲
年齢:
31
性別:
男性
誕生日:
1993/12/15
職業:
デザイナー
趣味:
スポーツ、ランニングなど
自己紹介:
ゲームの背景を中心にモデラーをやってます。
こういうツールがあったらいいなーと思ったところからPythonの勉強を始めました

カテゴリー

P R