You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maya Python开发硬边选择UI 按钮flag 'c'参数获NoneType报错

报错根因

Error: TypeError: file line 18: Invalid arguments for flag 'c'. Expected string or function, got NoneType #

这个错误是Maya UI开发的常见问题,核心原因是你给按钮的c(command)参数传递的是函数执行后的返回值,而不是函数本身:

  • 你写的c=findEdges(lowAngleSel, highAngleSel)会在创建UI的时候立刻执行findEdges函数,因为函数没有定义return语句,默认返回None,就等于你给按钮绑定了一个None作为执行命令,自然触发类型错误。
  • 除此之外你的代码还有两个隐性问题:
    • 只导入了pymel.core,没有导入maya.cmds,代码里的cmds调用会直接报未定义错误
    • 滑块数值是在UI创建时读取的固定值,后续用户调整滑块后点击按钮不会生效,用的还是初始值
修复方案

给按钮绑定回调时用lambda匿名函数包裹你的执行逻辑,同时把滑块数值的查询逻辑移到按钮点击时执行,保证每次取到的都是最新的滑块值。

完整可运行代码
import pymel.core as pm
import maya.cmds as cmds

def createWindow():
    title = 'Hard Edge Selection'
    if cmds.window(title, exists=True):
        cmds.deleteUI(title, window=True)
    cmds.window(t = title)
    cmds.rowColumnLayout(nc=2)
    # 存储滑块控件的名称,后续查询值用
    lowAngle = cmds.intSliderGrp( field=True, label='Low Angle', minValue=0, maxValue=30, value=30 )
    highAngle = cmds.intSliderGrp( field=True, label='High Angle', minValue=90, maxValue=150, value=150 )
    # 用lambda包裹回调,*args是为了接收Maya按钮默认传给回调的布尔参数
    cmds.button(l='Find Edges', c=lambda *args: findEdges(lowAngle, highAngle))
    cmds.showWindow()
    cmds.selectMode(o=True)

def findEdges(low_slider, high_slider):
    # 每次点击按钮时再查询当前滑块的数值
    lowAngleSel = cmds.intSliderGrp(low_slider, q=True, value=True)
    highAngleSel = cmds.intSliderGrp(high_slider, q=True, value=True)
    currentSelection = cmds.ls(sl=True)
    if not currentSelection:
        pm.warning("请先选中一个网格模型")
        return
    pm.mel.doMenuComponentSelectionExt(currentSelection[0], "edge", 0)
    # 按角度约束选择硬边
    pm.polySelectConstraint(a=True, ab=(lowAngleSel, highAngleSel), m=3, t=0x8000)
    # 清除选择约束
    pm.polySelectConstraint(m=0)
    print(f"已选中角度在{lowAngleSel}到{highAngleSel}度之间的硬边")

createWindow()
修改说明
  • 新增了maya.cmds的导入,解决未定义的问题
  • 按钮回调改用lambda包裹,传递的是函数对象而非执行结果,解决类型报错
  • 把滑块数值的查询移到findEdges函数内执行,保证每次点击都能取到用户调整后的最新值
  • 新增了空选择判断的容错逻辑,避免没选模型时点击按钮报错

内容的提问来源于stack exchange,提问作者WobblySausage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 02:21:02