Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中查询Radiobutton集合?_Python_Maya - Fatal编程技术网

如何在Python中查询Radiobutton集合?

如何在Python中查询Radiobutton集合?,python,maya,Python,Maya,我在python中有一段代码,它必须查询为maya中的窗口创建的三个单选按钮。这是我到目前为止的代码,我可以查询滑块,但我不知道如何查询单选按钮 import maya.cmds as cmds #def function1(value): def function1(value1,value2): print(value1) def function2(value): print(value) def createUI(): cmds.window("Wind

我在python中有一段代码,它必须查询为maya中的窗口创建的三个单选按钮。这是我到目前为止的代码,我可以查询滑块,但我不知道如何查询单选按钮

import maya.cmds as cmds

#def function1(value):
def function1(value1,value2):
    print(value1)

def function2(value):
    print(value)


def createUI(): 
    cmds.window("Window")
    cmds.columnLayout( adjustableColumn=True )
    value1 = cmds.intSliderGrp(label='number of moons', minValue=4, maxValue=20, value=12, field=True)
    value2 = cmds.intSliderGrp(label='Distance from parent to child', minValue=5, maxValue=40, value=20, field=True)

    DirectionControl = cmds.radioCollection()
    Direction0 = cmds.radioButton( label='Front')
    Direction1 = cmds.radioButton( label='Back')
    Direction2 = cmds.radioButton( label='Random')
    cmds.radioCollection( DirectionControl, edit=True, select=Direction0 )


    cmds.button(label = "OK", command = lambda *args: function1(cmds.intSliderGrp(value1, query=True, value=True), cmds.intSliderGrp(value2, query=True, value=True),cmds.radioButtonGrp(Direction1, query=True, value=True)))
    cmds.showWindow()


createUI()
# 这一行:

cmds.button(label = "OK", command = lambda *args: function1(cmds.intSliderGrp(value1, query=True, value=True), cmds.intSliderGrp(value2, query=True, value=True),cmds.radioButtonGrp(Direction1, query=True, value=True)))

如果我们删除与单选按钮相关的语句,它就可以工作。

首先,在lambda函数中放入这么多内容没有任何意义。你需要考虑以更好的方式编写代码,所以维护它的人不会对你发火:P.,更重要的是,下次当你回到代码时,它会更有意义。

import maya.cmds as cmds

#def function1(value):
def function1(value1,value2):
    print(value1)

def function2(value):
    print(value)


def createUI(): 
    cmds.window("Window")
    cmds.columnLayout( adjustableColumn=True )
    value1 = cmds.intSliderGrp(label='number of moons', minValue=4, maxValue=20, value=12, field=True)
    value2 = cmds.intSliderGrp(label='Distance from parent to child', minValue=5, maxValue=40, value=20, field=True)

    DirectionControl = cmds.radioCollection()
    Direction0 = cmds.radioButton( label='Front')
    Direction1 = cmds.radioButton( label='Back')
    Direction2 = cmds.radioButton( label='Random')
    cmds.radioCollection( DirectionControl, edit=True, select=Direction0 )


    cmds.button(label = "OK", command = lambda *args: function1(cmds.intSliderGrp(value1, query=True, value=True), cmds.intSliderGrp(value2, query=True, value=True),cmds.radioButtonGrp(Direction1, query=True, value=True)))
    cmds.showWindow()


createUI()

第二件事,你需要考虑阅读MAYA命令文档,因为RayOnCube和RealGoogle不一样,并且RealCopyOnCon不会像你预期的那样返回任何值。 我有一个你的代码清理版本

import maya.cmds as cmds
from functools import partial
#def function1(value):
def function1(value1,value2):
    print(value1)

def function2(value):
    print(value)


def createUI(): 
    myWindow = "SomeWindow"
    if maya.cmds.window(myWindow,ex=True):
        maya.cmds.deleteUI(myWindow)
    cmds.window(myWindow)
    cmds.columnLayout( adjustableColumn=True )
    value1 = cmds.intSliderGrp(label='number of moons', minValue=4, maxValue=20, value=12, field=True)
    value2 = cmds.intSliderGrp(label='Distance from parent to child', minValue=5, maxValue=40, value=20, field=True)

    DirectionControl = cmds.radioCollection()
    Direction0 = cmds.radioButton( label='Front')
    Direction1 = cmds.radioButton( label='Back')
    Direction2 = cmds.radioButton( label='Random')
    DirectionControl = cmds.radioCollection( DirectionControl, edit=True, select=Direction0 )
    cmds.button(label = "OK", command = partial(passValue, value1, value2, DirectionControl))
    cmds.setParent("..")
    cmds.showWindow()

def passValue(value1, value2, DirectionControl, *args):
    intValOne = cmds.intSliderGrp(value1, query=True, value=True)
    intValTwo = cmds.intSliderGrp(value2, query=True, value=True)
    radioCol = cmds.radioCollection(DirectionControl, query=True, sl=True)
    getSelectRadioVal = cmds.radioButton(radioCol, query=True, label=True)
    function1(intValOne, intValTwo)
    function2(getSelectRadioVal)

createUI() 

希望这有助于

首先,在lambda函数中放这么多东西没有任何意义。你需要考虑以更好的方式编写代码,所以维护它的人不会对你发火:P.,更重要的是,下次当你回到代码时,它会更有意义。

第二件事,你需要考虑阅读MAYA命令文档,因为RayOnCube和RealGoogle不一样,并且RealCopyOnCon不会像你预期的那样返回任何值。 我有一个你的代码清理版本

import maya.cmds as cmds
from functools import partial
#def function1(value):
def function1(value1,value2):
    print(value1)

def function2(value):
    print(value)


def createUI(): 
    myWindow = "SomeWindow"
    if maya.cmds.window(myWindow,ex=True):
        maya.cmds.deleteUI(myWindow)
    cmds.window(myWindow)
    cmds.columnLayout( adjustableColumn=True )
    value1 = cmds.intSliderGrp(label='number of moons', minValue=4, maxValue=20, value=12, field=True)
    value2 = cmds.intSliderGrp(label='Distance from parent to child', minValue=5, maxValue=40, value=20, field=True)

    DirectionControl = cmds.radioCollection()
    Direction0 = cmds.radioButton( label='Front')
    Direction1 = cmds.radioButton( label='Back')
    Direction2 = cmds.radioButton( label='Random')
    DirectionControl = cmds.radioCollection( DirectionControl, edit=True, select=Direction0 )
    cmds.button(label = "OK", command = partial(passValue, value1, value2, DirectionControl))
    cmds.setParent("..")
    cmds.showWindow()

def passValue(value1, value2, DirectionControl, *args):
    intValOne = cmds.intSliderGrp(value1, query=True, value=True)
    intValTwo = cmds.intSliderGrp(value2, query=True, value=True)
    radioCol = cmds.radioCollection(DirectionControl, query=True, sl=True)
    getSelectRadioVal = cmds.radioButton(radioCol, query=True, label=True)
    function1(intValOne, intValTwo)
    function2(getSelectRadioVal)

createUI() 

希望这些帮助

非常感谢。你救了我的命!:)非常感谢你。你救了我的命!:)