首页 > 解决方案 > 如何将滑块中的值存储为对象创建可以使用的整数

问题描述

在这段代码中,我有一个对象创建菜单,它从滑块中获取值并将其用于创建基元 - 我如何才能真正让滑块存储显示的数字,因为它现在什么都不做。

我可以删除滑块,但理想情况下,我希望拥有它们以获得更好的用户界面

import maya.cmds as mt

def ShowUI():

    if mt.window("Main", exists = True):
        mt.deleteUI("Main")

    mt.window("Main", title = "Maya Primitives", w = 300, h = 500)
    mt.columnLayout("MainLayout", w = 300, h =500)
    mt.optionMenu("PolygonMenu", w = 250, label = "Polygon Selection:")
    mt.menuItem(label = "Sphere")
    mt.menuItem(label = "Cube")
    mt.menuItem(label = "Cylinder")
    mt.button("Create", label = "Create", w = 300, command=ObjectCreation)
    mt.button("Delete", label = "Delete", w = 300, command=DeleteButton)
    mt.button("Clear", label = "Clear", w = 300, command=SceneClear)
    mt.showWindow("Main")

def DeleteButton(*args):
    mt.delete()

def SceneClear(*args):
    mt.delete(all=True, c=True)


def ObjectCreation(*args):
    currentValue = mt.optionMenu("PolygonMenu", query=True, value=True)
    if currentValue == "Sphere":
        SphereSlider()
        SphereRadius = mt.intSliderGrp(Sphradius, q = True, Value=True)
        finalSphere= mt.polySphere(r=SphereRadius, name = "Sphere", ch=False)


    elif currentValue == "Cube":
        CubeSlider()
        CubeWidth = mt.intSliderGrp(CubeW, q = True, Value=True)
        CubeHeight = mt.intSliderGrp(CubeH, q = True, Value=True)
        CubeDepth = mt.intSliderGrp(CubeD, q = True, Value=True)
        finalSphere= mt.polyCube(w=CubeWidth, h=CubeHeight, d=CubeDepth, name = "Cube", ch=False)        


    elif currentValue == "Cylinder":
        CylinderSlider()
        CyclinderRadius =  mt.intSliderGrp(Cylradius, q = True, Value=True)
        CyclinderHeight =  mt.intSliderGrp(CylH, q = True, Value=True)
        finalCylinder= mt.polyCylinder(r=CylinderRadius, h=CylinderHeight, name = "Cylinder", ch=False)


def SphereSlider():
    Sphradius = mt.intSliderGrp(l="Radius",min=0,max=25, field=True)

def CubeSlider():
    CubeW = mt.intSliderGrp(l="Width", min=0, max=25, field=True)
    CubeH = mt.intSliderGrp(l="Height", min=0, max=25, field=True)
    CubeD = mt.intSliderGrp(l="Depth", min=0, max=25, field=True)

def CylinderSlider():
    Cylradius = mt.intSliderGrp(l="Radius",min=0,max=25, field=True)
    CylH = mt.intSliderGrp(l="Height", min=0, max=25, field=True)


ShowUI()

标签: pythonuser-interfaceslidermaya

解决方案


好的,所以要创建一个滑块,您可以使用以下命令:

sphere_slider = mt.intSliderGrp(l="Radius",min=0,max=25, field=True)

查询它:

slider_value = mt.intSliderGrp(sphere_slider , q = True, Value=True)

但是因为你有两个不同的定义,你需要在它们之间传递滑块的名称。- 为此,您可以将 sphere_slider 设为全局。- 第二个选项,你可以给你的控件一个唯一的名字(有点危险,因为 maya occuld 重命名它):

mt.intSliderGrp("sphere_slider_name", l="Radius",min=0,max=25, field=True)
slider_value = mt.intSliderGrp("sphere_slider_name", q = True, Value=True)

-第三个选项,您可以使用字典甚至类:。Maya Python - 使用来自 UI 的数据在 Maya 中使用 Sliders 和 Python 来控制 Shapes - intSliderGrp如何创建 Maya 滑块以在界面中移动对象


推荐阅读