Maya Python – 使用来自UI的数据
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Maya Python – 使用来自UI的数据,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含10800字,纯文字阅读大概需要16分钟。
内容图文
![Maya Python – 使用来自UI的数据](/upload/InfoBanner/zyjiaocheng/711/a4568aeb1822450ea25090ffbe4886bc.jpg)
我正在编写一个脚本程序,并在UI上苦苦挣扎.我已经制作了几个UI,所有这些UI似乎都可以单独使用,但我不知道如何将UI中输入的数据用于其他功能.我正在尝试获取Gun Type(由用户在Bullet_Spray_Generator中选择)然后影响随后调用哪些UI.每种枪型都需要一组不同的滑块值,因此我为每个枪型设置了不同的UI.我想我需要将从BSG中选择的数据传递给if函数以调用正确的(第二个)UI,但运行它只是总是跳转到else函数并关闭窗口.到目前为止,这是我的代码:
import maya.cmds as cmds
from functools import partial
if (cmds.window("Bullet_Spray_Generator", exists = True)):
cmds.deleteUI("Bullet_Spray_Generator")
if (cmds.window("BSG2", exists = True)):
cmds.deleteUI("BSG2")
cmds.select(all=True)
cmds.delete()
def goShoot(numOfShots, distToTarget, *pArgs):
print "Begin"
cmds.deleteUI("BSG2")
createWall()
def cancelShoot(*pArgs):
print "cancel"
cmds.deleteUI("Bullet_Spray_Generator")
def createWall():
cmds.select(all=True)
cmds.delete()
wall = cmds.polyCube(h=10, w=15, d=1, name='wall')
cmds.move(0,5,0, 'wall')
def createGunUI(gunType, *pArgs):
if (GunSelectCtrl == 'Pistol'):
createPistolUI()
elif (GunSelectCtrl == 'Shotgun'):
createShotgunUI()
elif (GunSelectCtrl == 'SMG'):
createSMGUI()
elif (GunSelectCtrl == 'Sniper Rifle'):
createSniperUI()
elif (GunSelectCtrl == 'RPG'):
createRPGUI()
else:
print "Something went wrong"
cancelShoot()
def createPistolUI():
cmds.window("Pistol")
cmds.columnLayout(adjustableColumn=True)
cmds.deleteUI("Bullet_Spray_Generator")
NumBulletsCtrl = cmds.intSliderGrp(label='Number of Shots',
minValue=1, maxValue=9, value=4, field=True)
DistCtrl = cmds.intSliderGrp(label='Distance to Target (metres)',
minValue=1, maxValue=50, value=25, field=True)
cmds.button(label = "Fire", command = lambda *args: goShoot(cmds.intSliderGrp(NumBulletsCtrl,
query=True, value=True), cmds.intSliderGrp(DistCtrl, query=True, value=True), ))
cmds.button(label = "Cancel", command = cancelShoot)
cmds.showWindow("Pistol")
def createShotgunUI():
cmds.window("Shotgun")
cmds.columnLayout(adjustableColumn=True)
cmds.deleteUI("Bullet_Spray_Generator")
NumBulletsCtrl = cmds.intSliderGrp(label='Number of Shots',
minValue=1, maxValue=4, value=2, field=True)
DistCtrl = cmds.intSliderGrp(label='Distance to Target (metres)',
minValue=1, maxValue=50, value=25, field=True)
cmds.button(label = "Fire", command = lambda *args: goShoot(cmds.intSliderGrp(NumBulletsCtrl,
query=True, value=True), cmds.intSliderGrp(DistCtrl, query=True, value=True), ))
cmds.button(label = "Cancel", command = cancelShoot)
cmds.showWindow("Shotgun")
def createSMGUI():
cmds.window("SMG")
cmds.columnLayout(adjustableColumn=True)
cmds.deleteUI("Bullet_Spray_Generator")
NumBulletsCtrl = cmds.intSliderGrp(label='Number of Shots',
minValue=1, maxValue=20, value=4, field=True)
DistCtrl = cmds.intSliderGrp(label='Distance to Target (metres)',
minValue=1, maxValue=50, value=25, field=True)
cmds.button(label = "Fire", command = lambda *args: goShoot(cmds.intSliderGrp(NumBulletsCtrl,
query=True, value=True), cmds.intSliderGrp(DistCtrl, query=True, value=True), ))
cmds.button(label = "Cancel", command = cancelShoot)
cmds.showWindow("SMG")
def createSniperUI():
cmds.window("Sniper")
cmds.columnLayout(adjustableColumn=True)
cmds.deleteUI("Bullet_Spray_Generator")
NumBulletsCtrl = cmds.intSliderGrp(label='Number of Shots',
minValue=1, maxValue=2, value=2, field=True)
DistCtrl = cmds.intSliderGrp(label='Distance to Target (metres)',
minValue=1, maxValue=50, value=25, field=True)
cmds.button(label = "Fire", command = lambda *args: goShoot(cmds.intSliderGrp(NumBulletsCtrl,
query=True, value=True), cmds.intSliderGrp(DistCtrl, query=True, value=True), ))
cmds.button(label = "Cancel", command = cancelShoot)
cmds.showWindow("Sniper")
def createRPGUI():
cmds.window("RPG")
cmds.columnLayout(adjustableColumn=True)
cmds.deleteUI("Bullet_Spray_Generator")
NumBulletsCtrl = cmds.intSliderGrp(label='Number of Shots',
minValue=1, maxValue=1, value=1, field=True)
DistCtrl = cmds.intSliderGrp(label='Distance to Target (metres)',
minValue=1, maxValue=50, value=25, field=True)
cmds.button(label = "Fire", command = lambda *args: goShoot(cmds.intSliderGrp(NumBulletsCtrl,
query=True, value=True), cmds.intSliderGrp(DistCtrl, query=True, value=True), ))
cmds.button(label = "Cancel", command = cancelShoot)
cmds.showWindow("RPG")
def printNewMenuItem(item):
print item
return item
def createUI():
cmds.window("Bullet_Spray_Generator")
cmds.columnLayout(adjustableColumn=True)
GunSelectCtrl = cmds.optionMenu(label='Gun', changeCommand=printNewMenuItem)
cmds.menuItem(label='Pistol')
cmds.menuItem(label='Shotgun')
cmds.menuItem(label='SMG')
cmds.menuItem(label='Sniper Rifle')
cmds.menuItem(label='RPG')
cmds.button(label = "Continue", command = partial(createGunUI, GunSelectCtrl))
cmds.button(label = "Cancel", command = cancelShoot)
cmds.showWindow("Bullet_Spray_Generator")
createUI()
非常感谢任何帮助,非常感谢.
解决方法:
你应该使用字典:
myDic = {}
myDic["anyString"] = "Value, String, Tuples,...etc"
print myDic
使用dic的好处是你不必担心嵌套变量.
为了演示字典的强大功能,我还添加了一个函数createWeaponUI().
如果你选择Shotgun点击“继续”,它将使用createWeaponUI()创建一个手枪/霰弹枪UI.
你只需要为顶部的每个武器添加storedDataDic [“weqponYouWant_preset”]来生成你想要的任何ui.
它比50个UI复制/粘贴更容易阅读,并使用50 if / elif来告诉你应该使用什么武器.
这是您使用dic修改的脚本:
import maya.cmds as cmds
from functools import partial
storedDataDic = {}
storedDataDic["weapon"] = ["Pistol", "Shotgun", "SMG", "Sniper Rifle", "RPG"]
storedDataDic["weaponSelected"] = storedDataDic["weapon"][0]
storedDataDic["Shotgun_preset"] = [(1,4,2), (1,50,25)]
storedDataDic["Pistol_preset"] = [(1,18,2), (1,25,10)]
if (cmds.window("Bullet_Spray_Generator", exists = True)):
cmds.deleteUI("Bullet_Spray_Generator")
if (cmds.window("BSG2", exists = True)):
cmds.deleteUI("BSG2")
cmds.select(all=True)
cmds.delete()
def goShoot(numOfShots, distToTarget, *pArgs):
print "Begin"
cmds.deleteUI("BSG2")
createWall()
def cancelShoot(*pArgs):
print "cancel"
cmds.deleteUI("Bullet_Spray_Generator")
def createWall():
cmds.select(all=True)
cmds.delete()
wall = cmds.polyCube(h=10, w=15, d=1, name='wall')
cmds.move(0,5,0, 'wall')
def createGunUI(gunType, *pArgs):
if (gunType == 'Pistol'):
createWeaponUI()
elif (gunType == 'Shotgun'):
createWeaponUI()
elif (gunType == 'SMG'):
createSMGUI()
elif (gunType == 'Sniper Rifle'):
createSniperUI()
elif (gunType == 'RPG'):
createRPGUI()
else:
print "Something went wrong"
cancelShoot()
def createPistolUI():
cmds.window("Pistol")
cmds.columnLayout(adjustableColumn=True)
cmds.deleteUI("Bullet_Spray_Generator")
NumBulletsCtrl = cmds.intSliderGrp(label='Number of Shots',
minValue=1, maxValue=9, value=4, field=True)
DistCtrl = cmds.intSliderGrp(label='Distance to Target (metres)',
minValue=1, maxValue=50, value=25, field=True)
cmds.button(label = "Fire", command = lambda *args: goShoot(cmds.intSliderGrp(NumBulletsCtrl,
query=True, value=True), cmds.intSliderGrp(DistCtrl, query=True, value=True), ))
cmds.button(label = "Cancel", command = cancelShoot)
cmds.showWindow("Pistol")
def createShotgunUI():
cmds.window("Shotgun")
cmds.columnLayout(adjustableColumn=True)
cmds.deleteUI("Bullet_Spray_Generator")
NumBulletsCtrl = cmds.intSliderGrp(label='Number of Shots',
minValue=1, maxValue=4, value=2, field=True)
DistCtrl = cmds.intSliderGrp(label='Distance to Target (metres)',
minValue=1, maxValue=50, value=25, field=True)
cmds.button(label = "Fire", command = lambda *args: goShoot(cmds.intSliderGrp(NumBulletsCtrl,
query=True, value=True), cmds.intSliderGrp(DistCtrl, query=True, value=True), ))
cmds.button(label = "Cancel", command = cancelShoot)
cmds.showWindow("Shotgun")
def createSMGUI():
cmds.window("SMG")
cmds.columnLayout(adjustableColumn=True)
cmds.deleteUI("Bullet_Spray_Generator")
NumBulletsCtrl = cmds.intSliderGrp(label='Number of Shots',
minValue=1, maxValue=20, value=4, field=True)
DistCtrl = cmds.intSliderGrp(label='Distance to Target (metres)',
minValue=1, maxValue=50, value=25, field=True)
cmds.button(label = "Fire", command = lambda *args: goShoot(cmds.intSliderGrp(NumBulletsCtrl,
query=True, value=True), cmds.intSliderGrp(DistCtrl, query=True, value=True), ))
cmds.button(label = "Cancel", command = cancelShoot)
cmds.showWindow("SMG")
def createSniperUI():
cmds.window("Sniper")
cmds.columnLayout(adjustableColumn=True)
cmds.deleteUI("Bullet_Spray_Generator")
NumBulletsCtrl = cmds.intSliderGrp(label='Number of Shots',
minValue=1, maxValue=2, value=2, field=True)
DistCtrl = cmds.intSliderGrp(label='Distance to Target (metres)',
minValue=1, maxValue=50, value=25, field=True)
cmds.button(label = "Fire", command = lambda *args: goShoot(cmds.intSliderGrp(NumBulletsCtrl,
query=True, value=True), cmds.intSliderGrp(DistCtrl, query=True, value=True), ))
cmds.button(label = "Cancel", command = cancelShoot)
cmds.showWindow("Sniper")
def createRPGUI():
cmds.window("RPG")
cmds.columnLayout(adjustableColumn=True)
cmds.deleteUI("Bullet_Spray_Generator")
NumBulletsCtrl = cmds.intSliderGrp(label='Number of Shots',
minValue=1, maxValue=1, value=1, field=True)
DistCtrl = cmds.intSliderGrp(label='Distance to Target (metres)',
minValue=1, maxValue=50, value=25, field=True)
cmds.button(label = "Fire", command = lambda *args: goShoot(cmds.intSliderGrp(NumBulletsCtrl,
query=True, value=True), cmds.intSliderGrp(DistCtrl, query=True, value=True), ))
cmds.button(label = "Cancel", command = cancelShoot)
cmds.showWindow("RPG")
def printNewMenuItem(item):
print item
storedDataDic["weaponSelected"] = item
return storedDataDic["weaponSelected"]
def ui_refreshSelWeapon(fun, *args):
createGunUI(storedDataDic["weaponSelected"])
def createUI():
cmds.window("Bullet_Spray_Generator")
cmds.columnLayout(adjustableColumn=True)
GunSelectCtrl = cmds.optionMenu(label='Gun', changeCommand=printNewMenuItem)
for i in storedDataDic["weapon"]:
cmds.menuItem(label=i)
cmds.button(label = "Continue", command = ui_refreshSelWeapon)
cmds.button(label = "Cancel", command = cancelShoot)
cmds.showWindow("Bullet_Spray_Generator")
createUI()
weapon_uiDic = {}
def createWeaponUI():
weaponName = storedDataDic["weaponSelected"]
if cmds.window(weaponName, exists=True):
cmds.deleteUI(weaponName)
cmds.window(weaponName)
cmds.columnLayout(adjustableColumn=True)
cmds.deleteUI("Bullet_Spray_Generator")
nbP= storedDataDic[weaponName + "_preset"][0]
dcP = storedDataDic[weaponName + "_preset"][1]
weapon_uiDic["NumBulletsCtrl"] = cmds.intSliderGrp(label='Number of Shots',
minValue=nbP[0], maxValue=nbP[1], value=nbP[2], field=True)
weapon_uiDic["DistCtrl"] = cmds.intSliderGrp(label='Distance to Target (metres)',
minValue=dcP[0], maxValue=dcP[1], value=dcP[2], field=True)
weapon_uiDic["fireButton"] = cmds.button(label = "Fire",
command = lambda *args: goShoot(cmds.intSliderGrp(weapon_uiDic["NumBulletsCtrl"],
query=True, value=True), cmds.intSliderGrp(weapon_uiDic["DistCtrl"], query=True, value=True)))
cmds.button(label = "Cancel", command = cancelShoot)
cmds.showWindow(weaponName)
– -编辑 – –
I had pistol preset to make it more clear
内容总结
以上是互联网集市为您收集整理的Maya Python – 使用来自UI的数据全部内容,希望文章能够帮你解决Maya Python – 使用来自UI的数据所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。