(Maya Python) 如何通过 GUI 功能 运行 单选按钮?
(Maya Python) How do I run radio option buttons through a GUI function?
通常当我 运行 一个带有单选按钮选项的脚本时,你 select 一个单选按钮选项,然后你用按钮激活它。我曾经将我的菜单 gui 放在函数之外:但自从我学会了导入 maya 脚本后,我开始将我的菜单界面包装在一个 GUI 函数中,这意味着我的单选按钮技术现在不再有效。我也不知道如何让它工作。脚本本身很简单:导入脚本后只需 select 一个单选按钮选项,然后使用该按钮创建一个形状:至少它应该是这样工作的。相反,我没有收到任何错误,也没有创建任何形状,而且我不知道有什么问题。
'''
import cubeTestTemp
reload (cubeTestTemp)
cubeTestTemp.gui()
'''
import maya.cmds as cmds
#Creates ui.
if cmds.window("cubeWin", exists =True):
cmds.deleteUI("cubeWin", window = True)
myWindow = cmds.window("cubeWin",t='DS shapeDemo V1',w=200, h=500, toolbox=True)
column = cmds.columnLayout(adj=True)
#Creates variable to indicate the check box status. 1=Checked 0=Not Checked.
cubeNum1 = 0
cubeNum2 = 0
#Creates Button funtion.
def defaultButtonPush(*args):
#The Print checks if button is pushed and what is the check box status.
print "Button is pushed."
print cubeNum1
#Check box argument finds the status of the variable and determines what to do.
#Eather create a cube or display a error dialog box.
if cubeNum1 == 1:
print "Cube Creation sucessful"
cmds.polyCube()
print "Button is pushed."
print cubeNum2
if cubeNum2 == 1:
print "Sphere Creation sucessful"
cmds.polySphere()
def gui(*args):
#Creates check box.
#In the onCommand Script (onc) and offCommand Script (ofc) flags all commands must be made in between double quotes.
cmds.radioCollection()
cmds.radioButton(label='Cube',align='left',onCommand="cubeNum1 = 1", offCommand="cubeNum1 = 0")
cmds.radioButton(label='Sphere',align='left',onCommand="cubeNum2 = 1", offCommand="cubeNum2 = 0")
#Creates Button.
cmds.button( label='Execute', command=defaultButtonPush ,align='left' )
cmds.showWindow()
这是修改后的脚本。问题是脚本的范围。 "onCommand" 是在它自己的范围内执行的,它有自己的 "cubeNum" 变量。
"""
import cubeTestTemp
reload (cubeTestTemp)
cubeTestTemp.gui()
"""
import maya.cmds as cmds
# Variable to indicate the radio button status. 1=Cube, 2=Shpere.
shape_selector = 0
def action_button(*args):
"""
Create an object based on the shape_selector status
"""
print "Button is pushed", repr(args)
if shape_selector == 1:
cmds.polyCube()
print "Cube created"
elif shape_selector == 2:
cmds.polySphere()
print "Sphere created"
else:
print "No shape selected"
def selection_changed(shape):
"""
Save the current shape selection
into global variable "shape_selector"
"""
global shape_selector
shape_selector = shape
print "Current selection:", shape_selector
def gui():
"""
Create the GUI
"""
if cmds.window("cubeWin", exists=True):
cmds.deleteUI("cubeWin", window=True)
myWindow = cmds.window("cubeWin", t='DS shapeDemo V1', w=200, h=500, toolbox=True)
column = cmds.columnLayout(adj=True)
# Create the radio buttons
cmds.radioCollection()
cmds.radioButton(label='Cube',align='left', select=True, onCommand=lambda x:selection_changed(1))
cmds.radioButton(label='Sphere',align='left', onCommand=lambda x:selection_changed(2))
# Create the push button
cmds.button(label='Create', command=action_button, align='left')
cmds.showWindow()
if __name__ == "__main__":
gui()
另一种方法是仅在需要时读取单选按钮状态
"""
import cubeTestTemp
reload (cubeTestTemp)
cubeTestTemp.gui()
"""
import maya.cmds as cmds
def action_button(cube_button, sphere_button):
"""
Create an object based on the shape_selector status
"""
if cmds.radioButton(cube_button, query=True,select=True):
cmds.polyCube()
print "Cube created"
elif cmds.radioButton(sphere_button, query=True,select=True):
cmds.polySphere()
print "Sphere created"
else:
print "No shape selected"
def gui():
"""
Create the GUI
"""
if cmds.window("cubeWin", exists=True):
cmds.deleteUI("cubeWin", window=True)
myWindow = cmds.window("cubeWin", t='DS shapeDemo V1', w=200, h=500, toolbox=True)
column = cmds.columnLayout(adj=True)
# Create the radio buttons
cmds.radioCollection()
# Save the button ids
cube_button = cmds.radioButton(label='Cube',align='left', select=True)
sphere_button = cmds.radioButton(label='Sphere',align='left')
# Create the push button
cmds.button(label='Create', command=lambda x:action_button(cube_button, sphere_button), align='left')
cmds.showWindow()
if __name__ == "__main__":
gui()
通常当我 运行 一个带有单选按钮选项的脚本时,你 select 一个单选按钮选项,然后你用按钮激活它。我曾经将我的菜单 gui 放在函数之外:但自从我学会了导入 maya 脚本后,我开始将我的菜单界面包装在一个 GUI 函数中,这意味着我的单选按钮技术现在不再有效。我也不知道如何让它工作。脚本本身很简单:导入脚本后只需 select 一个单选按钮选项,然后使用该按钮创建一个形状:至少它应该是这样工作的。相反,我没有收到任何错误,也没有创建任何形状,而且我不知道有什么问题。
'''
import cubeTestTemp
reload (cubeTestTemp)
cubeTestTemp.gui()
'''
import maya.cmds as cmds
#Creates ui.
if cmds.window("cubeWin", exists =True):
cmds.deleteUI("cubeWin", window = True)
myWindow = cmds.window("cubeWin",t='DS shapeDemo V1',w=200, h=500, toolbox=True)
column = cmds.columnLayout(adj=True)
#Creates variable to indicate the check box status. 1=Checked 0=Not Checked.
cubeNum1 = 0
cubeNum2 = 0
#Creates Button funtion.
def defaultButtonPush(*args):
#The Print checks if button is pushed and what is the check box status.
print "Button is pushed."
print cubeNum1
#Check box argument finds the status of the variable and determines what to do.
#Eather create a cube or display a error dialog box.
if cubeNum1 == 1:
print "Cube Creation sucessful"
cmds.polyCube()
print "Button is pushed."
print cubeNum2
if cubeNum2 == 1:
print "Sphere Creation sucessful"
cmds.polySphere()
def gui(*args):
#Creates check box.
#In the onCommand Script (onc) and offCommand Script (ofc) flags all commands must be made in between double quotes.
cmds.radioCollection()
cmds.radioButton(label='Cube',align='left',onCommand="cubeNum1 = 1", offCommand="cubeNum1 = 0")
cmds.radioButton(label='Sphere',align='left',onCommand="cubeNum2 = 1", offCommand="cubeNum2 = 0")
#Creates Button.
cmds.button( label='Execute', command=defaultButtonPush ,align='left' )
cmds.showWindow()
这是修改后的脚本。问题是脚本的范围。 "onCommand" 是在它自己的范围内执行的,它有自己的 "cubeNum" 变量。
"""
import cubeTestTemp
reload (cubeTestTemp)
cubeTestTemp.gui()
"""
import maya.cmds as cmds
# Variable to indicate the radio button status. 1=Cube, 2=Shpere.
shape_selector = 0
def action_button(*args):
"""
Create an object based on the shape_selector status
"""
print "Button is pushed", repr(args)
if shape_selector == 1:
cmds.polyCube()
print "Cube created"
elif shape_selector == 2:
cmds.polySphere()
print "Sphere created"
else:
print "No shape selected"
def selection_changed(shape):
"""
Save the current shape selection
into global variable "shape_selector"
"""
global shape_selector
shape_selector = shape
print "Current selection:", shape_selector
def gui():
"""
Create the GUI
"""
if cmds.window("cubeWin", exists=True):
cmds.deleteUI("cubeWin", window=True)
myWindow = cmds.window("cubeWin", t='DS shapeDemo V1', w=200, h=500, toolbox=True)
column = cmds.columnLayout(adj=True)
# Create the radio buttons
cmds.radioCollection()
cmds.radioButton(label='Cube',align='left', select=True, onCommand=lambda x:selection_changed(1))
cmds.radioButton(label='Sphere',align='left', onCommand=lambda x:selection_changed(2))
# Create the push button
cmds.button(label='Create', command=action_button, align='left')
cmds.showWindow()
if __name__ == "__main__":
gui()
另一种方法是仅在需要时读取单选按钮状态
"""
import cubeTestTemp
reload (cubeTestTemp)
cubeTestTemp.gui()
"""
import maya.cmds as cmds
def action_button(cube_button, sphere_button):
"""
Create an object based on the shape_selector status
"""
if cmds.radioButton(cube_button, query=True,select=True):
cmds.polyCube()
print "Cube created"
elif cmds.radioButton(sphere_button, query=True,select=True):
cmds.polySphere()
print "Sphere created"
else:
print "No shape selected"
def gui():
"""
Create the GUI
"""
if cmds.window("cubeWin", exists=True):
cmds.deleteUI("cubeWin", window=True)
myWindow = cmds.window("cubeWin", t='DS shapeDemo V1', w=200, h=500, toolbox=True)
column = cmds.columnLayout(adj=True)
# Create the radio buttons
cmds.radioCollection()
# Save the button ids
cube_button = cmds.radioButton(label='Cube',align='left', select=True)
sphere_button = cmds.radioButton(label='Sphere',align='left')
# Create the push button
cmds.button(label='Create', command=lambda x:action_button(cube_button, sphere_button), align='left')
cmds.showWindow()
if __name__ == "__main__":
gui()