회원 로그인
|
.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개(1/24페이지)
번호 | 제목 | 글쓴이 | 조회 | 날짜 |
---|---|---|---|---|
마야 뷰포트 네비게이션 팁 | 푸딩뱃살 | 42033 | 2020.04.06 17:22 | |
Maya 버전 별 Python 버전 | 푸딩뱃살 | 63447 | 2014.01.08 17:59 | |
464 | [Dev] Autodesk Maya Devkit 다운로드 | 푸딩뱃살 | 674 | 2023.01.28 14:28 |
463 | [Base] (해결 중) modules 환경설정 중 | 푸딩뱃살 | 605 | 2022.11.09 11:47 |
462 | [Script] pymel 딕셔너리형 사용 시 KeyError | 푸딩뱃살 | 805 | 2022.11.07 12:08 |
461 | [오류] Building Numpy for Maya Python 2.7.x | 푸딩뱃살 | 570 | 2022.10.23 14:38 |
460 | [Base] 뷰포트에서 조절자가 안 보일때 | 푸딩뱃살 | 737 | 2022.10.13 15:47 |
459 | [Rigging] mirror joints 사용 시 유의 사항 | 푸딩뱃살 | 741 | 2022.10.04 10:46 |
458 | [Script] 2022에서 enum34 모듈 설치 금지 | 푸딩뱃살 | 586 | 2022.08.17 18:08 |
457 | [Script] pymel 예제 | 푸딩뱃살 | 605 | 2022.07.05 19:20 |
456 | [Script] 인코드 / 디코드 - 2.7 한글 사용 | 푸딩뱃살 | 875 | 2022.03.08 17:52 |
455 | [Dev] ui 없이 mayapy로 자동화 | 푸딩뱃살 | 677 | 2022.02.17 13:56 |
454 | [Dev] mayapy로 ui파일 py로 | 푸딩뱃살 | 515 | 2022.02.15 18:20 |
453 | [오류] Error : MayaBonusTools | 푸딩뱃살 | 884 | 2022.01.21 17:52 |
452 | [오류] Error: ModuleNotFoundError | 푸딩뱃살 | 745 | 2022.01.21 16:24 |
451 | [Dev] mayapy | 푸딩뱃살 | 622 | 2022.01.19 20:08 |
450 | [Base] function selCom at 0x7f29c5c04aa0 | 푸딩뱃살 | 589 | 2022.01.19 17:24 |
449 | [Base] wireframe on shaded 단축키 만들기 | 푸딩뱃살 | 876 | 2022.01.04 10:55 |
448 | [오류] OpenCL Error | 푸딩뱃살 | 506 | 2021.12.28 01:40 |
447 | [Script] Easily Translate MEL Commands to Python | 푸딩뱃살 | 798 | 2021.12.02 11:22 |
446 | [Base] output window 띄우지 않기 | 푸딩뱃살 | 776 | 2021.11.24 21:44 |
445 | [Rigging] shapeEditorManager 삭제 안됨 | 푸딩뱃살 | 854 | 2021.11.12 23:30 |