python - 如何将滑块中的值存储为对象创建可以使用的整数
问题描述
在这段代码中,我有一个对象创建菜单,它从滑块中获取值并将其用于创建基元 - 我如何才能真正让滑块存储显示的数字,因为它现在什么都不做。
我可以删除滑块,但理想情况下,我希望拥有它们以获得更好的用户界面
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()
解决方案
好的,所以要创建一个滑块,您可以使用以下命令:
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 滑块以在界面中移动对象
推荐阅读
- sqlite.swift - 使用 SQLite.swift 更改现有表?
- python - python dash应用程序中的交互式英国县地图
- azure - 如何将本地 SQL 数据库备份文件导入 Azure SQL 服务器数据库?
- javascript - Datepicker 不适用于 googleapis 3.5.1
- python - 您如何计算从第一次执行循环到用户在 Python 中结束所经过的时间?
- docker - Terraform Docker Provider:有什么方法可以在 Docker 主机上执行命令?
- sql - SQL查询优化实践
- python - 我的 Django Python 代码没有更改数据库记录
- html - 旋转div时如何将文本与左侧对齐?
- android - android设备启动后如何执行一些应用程序(没有UI的简单C应用程序)