pyqt中是否有任何曲线控制?我附加了一个基于maya gradientControl的图像。我正在寻找一些与pyqt类似的地方,我想编辑曲线,每个编辑都应该触发一些信号。现在我可以使用sip,并且我可以将maya gradientControl封装到我的pyqt窗口中,但实际上并不像预期的那样工作。这是我正在尝试的代码。它只是一个QWidget,所以当我在曲线上添加一个点时很难找到发生的事情。使用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