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

Maya Python开发FileManager时MNGR_Window报错及功能实现求助

问题排查与修复方案

核心错误点梳理

  • 缺少os、maya.cmds模块导入声明
  • 类内实例方法未加self参数,调用类内方法未加self.前缀,导致函数/变量寻址失败,触发未定义报错
  • 按钮的command参数绑定错误,直接写MakeFolders会寻址全局作用域的函数,找不到类内的方法
  • 仅读取了资产名称输入框的值,未获取下拉选择的项目、资产类型参数,路径拼接逻辑完全缺失
  • 没有按需求实现三级子文件夹(model/texture/shading)的自动生成逻辑

修复后完整可用代码

import os
import maya.cmds as cmds

class MNGR_Window(object):
    # 根目录可根据实际需求修改,这里对应你需求里的B盘根路径
    ROOT_PATH = "B:/"
    # 固定需要生成的子文件夹名
    SUB_FOLDERS = ["model", "texture", "shading"]
    
    def make_dir(self, path):
        if not os.path.exists(path):
            os.makedirs(path)
        return path
        
    def MakeFolders(self, *args):
        # 读取所有UI输入值
        asset_name = cmds.textField(self.tb, q=True, tx=True).strip()
        project = cmds.optionMenu(self.project_menu, q=True, value=True)
        asset_type = cmds.optionMenu(self.type_menu, q=True, value=True)
        
        if not asset_name:
            cmds.warning("请输入资产名称")
            return
        
        # 拼接基础路径
        base_path = os.path.join(self.ROOT_PATH, project, asset_type, asset_name)
        # 创建基础路径
        self.make_dir(base_path)
        # 创建三级子文件夹
        for folder in self.SUB_FOLDERS:
            self.make_dir(os.path.join(base_path, folder))
        
        print(f'路径已创建完成:{base_path}')

    def __init__(self):
        self.window = "MNGR_window"
        self.title = "File Manager"
        self.size = (400,400)
        
        # 关闭已存在的旧窗口
        if cmds.window(self.window, exists = True):
            cmds.deleteUI(self.window, window = True)
            
        # 创建新窗口
        cmds.window(self.window, title=self.title, widthHeight=self.size)
        cmds.columnLayout(adjustableColumn = True)
        
        cmds.text(self.title)
        cmds.separator(height=20)
        
        cmds.text(label="资产名称")
        self.tb = cmds.textField(tx ="")
     
        self.project_menu = cmds.optionMenu(label= "所属项目")
        cmds.menuItem(label = "Project1")
        cmds.menuItem(label = "Project2")
        cmds.menuItem(label = "Project3")
        cmds.menuItem(label = "Project4")
        
        self.type_menu = cmds.optionMenu(label= "资产类型")
        cmds.menuItem(label = "Props")
        cmds.menuItem(label = "Chara")
        cmds.menuItem(label = "Scene")
        
        cmds.button(label="创建文件夹结构", command=self.MakeFolders)
        cmds.showWindow()

myWindow = MNGR_Window()

验证说明

运行代码后窗口会正常弹出,输入资产名称、选择对应项目和资产类型,点击创建按钮即可自动生成要求的目录结构,资产目录下会自动生成model、texture、shading三个子文件夹。如果未输入资产名称会弹出警告提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:36:09