회원 로그인
정보기억 정보기억에 체크할 경우 다음접속시 아이디와 패스워드를 입력하지 않으셔도 됩니다.
그러나, 개인PC가 아닐 경우 타인이 로그인할 수 있습니다.
PC를 여러사람이 사용하는 공공장소에서는 체크하지 마세요.
소셜네트워크 서비스를 통해서 로그인하시면 별도의 로그인 절차없이 회원서비스를 이용하실 수 있습니다.


최근 게시물

1.노션에서 작성 중

1.노션에서 작성 중

개편하기 전까지 노션에서 작성 중

2024.04.04//read more

2.ChatGPT

2.ChatGPT

OpenAI로 대규모 언어 모델대화형...

2023.03.16//read more

3.노코딩 게임 엔진 - 빌..

3.노코딩 게임 엔진 - 빌..

빌드 지원안드로이드iOS윈도우즈특이사...

2023.03.14//read more

4.(완료) 미접속 회원 정..

4.(완료) 미접속 회원 정..

[완료] 36명의 회원을 정리하였습니...

2023.02.16//read more

5.매뉴얼 플러스 - 전자제..



안정적인 DNS 서비스 DNSEver
DNS Powered by DNSEver.com


.ui 로드 예제

푸딩뱃살 | 2018.03.02 18:52 | 조회 3748
.ui 로드 예제
:마야에서 ui파일을 PySide2를 이용하여 불러와본다.
  • 메인 윈도우, 독 위젯, 위젯을 만든다.
    • 독 위젯은 Channel Box 등의 탭에 붙지 않는다.
  • Qt Designer에서 ui 생성
  • /내문서/maya/Script/DEMO/DEMO.ui 위치
  • 코드 작성 시
    • Window와 Widget은 QtWidgets.QMainWindow
    • Dock Widget은 QtWidgets.QDockWidget



# -*- coding: utf-8 -*-

from maya import OpenMayaUI as omui
import os
from maya import cmds, mel
#import pymel.core as pm

try:
    from PySide2 import QtCore, QtUiTools, QtGui, QtWidgets
    from PySide2 import __version__
    from shiboken2 import wrapInstance
except ImportError:
    from PySide import QtUiTools, QtCore, QtGui
    from PySide import __version__
    from shiboken import wrapInstance


#공통
mayaMainWindowAdr = omui.MQtUtil.mainWindow() 
mayaMainWindow = wrapInstance(long(mayaMainWindowAdr), QtWidgets.QWidget)


#마야 메인 윈도우
class DemoWindow(QtWidgets.QMainWindow):
    def __init__(self):
        self.SCRIPT_LOCATION = os.path.join(os.environ['HOME'], "maya", "Scripts", "DEMO")
        self.ui = None
        self.build_ui()

    def build_ui(self):
        QtWidgets.QMainWindow.__init__(self)

        #창이 띄어져 있는지
        for mMW in mayaMainWindow.findChildren(QtWidgets.QMainWindow):
            if mMW.objectName() == "DemoQMainWindow": #.ui의 QMainWindow의 오브젝트명
                mMW.deleteLater()

        loader = QtUiTools.QUiLoader()
        self.ui = loader.load(os.path.join(self.SCRIPT_LOCATION, 'DEMO.ui'), parentWidget=mayaMainWindow)
        self.ui.show()

DEMO = DemoWindow()


#dock위젯
from maya.app.general.mayaMixin import MayaQWidgetDockableMixin

class DemoDockWidget(MayaQWidgetDockableMixin, QtWidgets.QMainWindow):
    def __init__(self):
        #super(DemoWidget, self).__init__(parent)
        self.SCRIPT_LOCATION = os.path.join(os.environ['HOME'], 'maya', 'Scripts', 'DEMO')
        self.ui = None
        self.build_ui()

    def build_ui(self):
        QtWidgets.QMainWindow.__init__(self)

        #창이 띄어져 있는지
        for mMW in mayaMainWindow.findChildren(QtWidgets.QDockWidget):
            if mMW.objectName() == 'DemoQDockWidget': #.ui의 QDockWidget의 오브젝트명
                mMW.deleteLater()
        
        loader = QtUiTools.QUiLoader()
        self.ui = loader.load(os.path.join(self.SCRIPT_LOCATION, 'DEMO2.ui'), parentWidget=mayaMainWindow)
        self.ui.show()

DEMO2 = DemoDockWidget()


#위젯
class DemoWidget(QtWidgets.QMainWindow):
    def __init__(self):
        self.SCRIPT_LOCATION = os.path.join(os.environ['HOME'], "maya", "Scripts", "DEMO")
        self.ui = None
        self.build_ui()

    def build_ui(self):
        QtWidgets.QMainWindow.__init__(self)

        #창이 띄어져 있는지
        for mMW in mayaMainWindow.findChildren(QtWidgets.QMainWindow):
            if mMW.objectName() == "DemoQWidget": #.ui의 QWidget의 오브젝트명
                mMW.deleteLater()

        loader = QtUiTools.QUiLoader()
        self.ui = loader.load(os.path.join(self.SCRIPT_LOCATION, 'DEMO3.ui')) #, parentWidget=mayaMainWindow)
        self.ui.show()

DEMO3 = DemoWidget()


 런타임 에러

Object's name 'MY_CUSTOM_UIWorkspaceControl' is not unique.
ui명령을 설정하는 편집 플래그를 잊어버렸다.

https://stackoverflow.com/questions/30973730/python-for-maya-objects-name-is-not-unique-when-calling-object-from-class-t

참고
https://forums.autodesk.com/t5/maya-programming/examples-of-workspace-control-in-python/td-p/6931336
466개(6/24페이지)
마야
번호 제목 글쓴이 조회 날짜
공지 마야 뷰포트 네비게이션 팁 푸딩뱃살 42618 2020.04.06 17:22
공지 Maya 버전 별 Python 버전 푸딩뱃살 63966 2014.01.08 17:59
364 [Plugin] nsSkinTools 첨부파일 관리자 3349 2018.06.03 17:20
363 [Script] Maya Capture 첨부파일 푸딩뱃살 3378 2018.05.17 12:07
362 [Script] pyqt의 frameLayout 첨부파일 푸딩뱃살 3650 2018.05.15 10:47
361 [오류] Expresstion Editor 창 열기 오류 푸딩뱃살 2991 2018.05.09 17:19
360 [Modeling] Edge 오류 사진 첨부파일 푸딩뱃살 3830 2018.04.17 15:02
359 [Base] Backface Culling 푸딩뱃살 2972 2018.04.17 14:32
358 [Animation] HumanIK 컨트롤 리그의 컨트롤러 0 관련 이슈 첨부파일 푸딩뱃살 3543 2018.04.03 18:54
357 [Script] ui 파일 로딩 (QMainWindow) 푸딩뱃살 3177 2018.03.29 18:17
356 [Modeling] Cleanup의 메시 최적화 사진 첨부파일 푸딩뱃살 3404 2018.03.28 17:15
355 [Plugin] SOuP 첨부파일 푸딩뱃살 2696 2018.03.28 12:46
354 [Plugin] PiStage - 마야와 언리얼을 이용한 실시간 렌더링 첨부파일 푸딩뱃살 3548 2018.03.28 10:22
353 [Base] 마야 설정 파일을 svn으로 동기화 하기 첨부파일 푸딩뱃살 2548 2018.03.23 22:58
352 [Script] FBX Command 사진 첨부파일 푸딩뱃살 2736 2018.03.23 12:22
351 [Script] PyQt와 PySide의 클래스명 차이 푸딩뱃살 4422 2018.03.12 18:56
350 [Script] channelbox 푸딩뱃살 2699 2018.03.05 17:08
349 [Base] The Morph Target object's controlling slider may not hav 사진 첨부파일 푸딩뱃살 3432 2018.03.05 11:33
>> [Script] .ui 로드 예제 사진 첨부파일 푸딩뱃살 3749 2018.03.02 18:52
347 [오류] Warning: Unable to export some material(s) 사진 첨부파일 푸딩뱃살 2462 2018.03.02 12:56
346 [Base] 일부 BlendShape 적용된 FBX 익스포트 사진 첨부파일 푸딩뱃살 2815 2018.02.28 18:25
345 [Rigging] skinCluster의 영향 사진 첨부파일 푸딩뱃살 3033 2018.02.22 16:16