Nuke Python 自定义UI

快捷键,菜单,菜单项 的做法。这类代码一般在menu.py里面。至于如何安装请参看installing Plug-ins.

nuke中现有的菜单:

  • Nuke -- 程序菜单在界面的最上面:


  • Window -- pane 在pane菜单下的内容菜单。


  • nodes 工具栏(在节点图上右键单击)


  • 属性 右击属性panel的菜单


  • 动画- 所有属性中动画按钮上的弹出菜单,右击Curve Editor的菜单


  • viewer 右击viewer的菜单


  • Node Graph 右击Node graph的菜单


  • Axis 所有Axis_knob的菜单


创建自定义菜单
m = nuke.menu('Viewer')
myMenu = m.addMenu('MyStuff')

给菜单添加icon

    m = nuke.menu('Viewer')
    myMenu = m.addMenu('MyStuff', icon = 'ohu_icon.png' )
创建自定义工具栏
myToolbar = nuke.toolbar('My nodes')

给toolbar添加item和给menu添加一样
myToolbar.addCommand('My Gizmo', lambda: nuke.createNode('NoOp' ) )
如果没给item指定toolbar,那将成为一个按钮:

否则,item作为菜单项( 像默认工具栏那样):

myToolbar.addCommand( 'My other Tools/tool A', lambda: nuke.createNode( 'NoOp') )
myToolbar.addCommand(' My Other tools/tool B', lambda: nuke.createNode('NoOp') )

给menu添加icon,那就在创建前明确指定。
myMenu = myToolbar.addMenu('My Gizmo', icon= 'ohu_icon.png' )
myMenu.addCommand( 'tool A', lambda: nuke.createNode('NoOp'))
myMenu.addCommand(' tool B', lambda: nuke.createNode('NoOp'))

创建自定义菜单项

给菜单添加自定义入口,请用menu.addCommand():
nuke.menu('Nuke').addCommand('MyMenu/my tool 1', lambda:nuke.message('yay, it works' ))

注意:上面的例子中,我们创建了叫MyMenu的菜单

利用lambda表达式创建的匿名函数要在菜单项调用时才执行,你可以将需要的命令打包进一个字符串:
nuke.menu('Nuke').addCommand('MyMenu/my tool 2', "nuke.message('yay, it works too')" )

也可以给菜单项赋予位于plug-in路径下的icon
nuke.menu('Nuke').addCommand('myMenu/my tool 2', "nuke.message('yay, it works too')", icon = 'ohu_icon.png')

要设置菜单项的位置请使用index参数:
nuke.menu('Nuke').addCommand('MyMenu/my tool 1.5', "nuke.message('yay, it works too')", index = 1 )

通过名字找到菜单,并在前面添加一个分割线:

m = nuke.menu('Nuke').findItem('MyMenu')
m.addSeparator()
nuke.menu('Nuke').addCommand('MyMenu/my tool 3', "nuke.message('yay, it works too')")

找到已存在的menu 项,并运行其函数:
m = nuke.menu('Nuke').findItem('Edit/Node/Filename/Show')
m.invoke()

停用菜单项:
m = nuke.menu('Nuke').findItem('Redner/Proxy Mode')
m.setEnable( False )

注意,菜单虽然禁止了,但快捷键依然可用。

绑定快捷键

给已存在菜单绑定快捷键,你可以有效地取代整个菜单项
给Axis2节点绑定快捷键。这个节点在Nodes菜单里(那就是,toolbar),在3D子菜单,其子项叫Axis。
nuke.menu('Nodes').addCommand('3D/Axis', lambda:nuke.createNode('Axis2' ), 'a' )
现在键盘上的a就能创建Axis节点。

当绑定快捷键时也可以修改. 用ctrl( mac上的 cmd) 作为修改:

  • ctrl + 后跟键
  • ~ 后跟键
    例如:
nuke.menu('Nodes').addCommand('3D/Axis', "nuke.createNode('Axis2')", "ctrl+a')
nuke.menu('Nodes').addCommand('3D/Axis', "nuke.createNode('Axis2')", "`a')

用alt作为修改:

  • alt+键
  • # + 键
nuke.menu( 'Nodes' ).addCommand( '3D/Axis', "nuke.createNode( 'Axis2' )", 'alt+a')
nuke.menu( 'Nodes' ).addCommand( '3D/Axis', "nuke.createNode( 'Axis2' )", '#a')

用shift作为修改:

  • shift + 键
  • + 后跟键
nuke.menu( 'Nodes' ).addCommand( '3D/Axis', "nuke.createNode( 'Axis2' )", 'shift+a')
nuke.menu( 'Nodes' ).addCommand( '3D/Axis', "nuke.createNode( 'Axis2' )", '+a')
定义默认knob

修改默认knob值,请使用nuke.knobDefault()

nuke.knobDefalut('Blur.size', '77' )

上面的代码将所有blur节点的size控制默认值设置为77
当跳过节点类,新的默认值会应用到所有给定的控制上

nuke.knobDefault( 'channels', 'rgba')

上面的代码在节点创建时设置所有的channel为rgba。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,561评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,218评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,162评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,470评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,550评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,806评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,951评论 3 407
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,712评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,166评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,510评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,643评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,306评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,930评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,745评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,983评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,351评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,509评论 2 348

推荐阅读更多精彩内容