회원 로그인
|
.ui 로드 예제
.ui 로드 예제
:마야에서 ui파일을 PySide2를 이용하여 불러와본다.
참고
https://forums.autodesk.com/t5/maya-programming/examples-of-workspace-control-in-python/td-p/6931336
:마야에서 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
댓글 0개
| 엮인글 0개
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 |