首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PyQt实现曲线控制

用PyQt实现曲线控制
EN

Stack Overflow用户
提问于 2012-06-27 13:27:23
回答 1查看 2.4K关注 0票数 1

pyqt中有没有曲线控件?我已经附上了一个基于maya gradientControl的图片。我正在寻找一些类似于pyqt的东西,我想要编辑曲线,每次编辑都应该触发一些signal.Right,现在我可以使用sip,我可以将maya gradientControl包装到我的pyqt窗口中,但它真的不像预期的那样工作。这是我正在尝试的代码。这只是一个QWidget,所以当我在曲线上添加一个点时,很难找到发生了什么。

代码语言:javascript
复制
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。这是maya的documentation

但我正在寻找一些纯粹的QT小工具或一些想法,我们可以实现这一点。我尝试过使用QPolygon,但不知道如何操作控制点运行时。有什么想法吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-27 13:56:44

因为渐变控件是用maya代码的C++端编写的,所以您可能已经发现(据我所知)它并没有作为PyQt4小部件的公共接口。

sip给你的是一个QWidget引用,它可以让你根据自己的喜好重新定位并将其放入你的应用中。但是从那时起使用它,最好的办法就是连接到python commands callbacks for the gradient control

代码语言:javascript
复制
cmds.gradientControlNoAttr(self.range_ctr, e=True, changeCommand=self.myCallback)

如果gradientControlNoAttr的可用回调对您来说还不够,那么我担心您将不得不使用自己的paint事件(或使用QGraphics类)来滚动您自己的自定义小部件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11219920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档