pyqt에 커브 컨트롤이 있습니까? maya gradientControl을 기반으로 이미지를 첨부했습니다. 나는 커브를 편집하고 각각의 편집이 어떤 신호를 트리거해야하는 pyqt와 비슷한 것을 찾고 있는데, 지금은 sip을 사용할 수 있으며, 내 pyqt 윈도우로 maya gradientControl을 래핑 할 수 있지만 예상대로 작동하지 않습니다. 여기에 제가 시도하는 코드가 있습니다. 그것의 단지 QWidget 그래서 곡선에 점을 추가 할 때 일어나는 것을 찾기가 매우 어렵습니다.Curve Control with PyQt
import os
import maya.cmds as cmds
import maya.mel as mel
import maya.OpenMayaUI as mui
import sys
import sip
from PyQt4 import QtGui, QtCore, uic
baseUI = os.path.join(os.path.dirname(__file__), "range_ctrl.ui")
baseUIClass, baseUIWidget = uic.loadUiType(baseUI)
def getMayaWindow():
windowPointer = mui.MQtUtil.mainWindow()
return sip.wrapinstance(long(windowPointer), QtCore.QObject)
def convertToQT(controlName):
controlPoniter = mui.MQtUtil.findControl(controlName)
if controlPoniter is not None:
return sip.wrapinstance(long(controlPoniter), QtCore.QObject)
class MayaRangeCtrl(baseUIWidget, baseUIClass):
def __init__(self, parent=getMayaWindow()):
super(baseUIWidget, self).__init__(parent)
self.setupUi(self)
self.setObjectName("mayaRangeCtrl")
self.setWindowTitle("Range Control")
self.p1_vbox = QtGui.QVBoxLayout(self.frame)
self.range_ctr = cmds.gradientControlNoAttr('mayaaaa', h=90)
mayaQTObj = convertToQT(self.range_ctr)
self.p1_vbox.addWidget(mayaQTObj)
self.setCentralWidget(self.frame)
self.show()
def main():
myWindow = MayaRangeCtrl()
def run():
main()
다음은 화면 캡처입니다.
그리고 UI는 미안 창을 가진 QFrame가 포함되어 있습니다. 여기에 마야입니다 documentation
하지만 순수한 QT 위젯이나 어떻게 구현할 수 있는지 생각하고 있습니다. QPolygon을 사용해 보았지만 컨트롤 포인트 실행 시간을 어떻게 조작 할 수 있을지는 알 수 없습니다. 어떤 생각?
미리 감사드립니다.
콜백을 추가하는 것이 해결책 일 것이라고 생각하지만 위젯이 이와 비슷한 것을 알고 있다면 알아두면 좋을 것입니다. – Achayan