查看: 2550|回复: 0
打印 上一主题 下一主题

[插件] NUKE PYTHON 自定义菜单栏UI

[复制链接]

5472

主题

6

听众

1万

积分

版主

Rank: 7Rank: 7Rank: 7

纳金币
76544
精华
23

活跃会员 荣誉管理 突出贡献 优秀版主 论坛元老

跳转到指定楼层
楼主
发表于 2017-7-26 11:55:33 |只看该作者 |倒序浏览
创建自定义菜单
m = nuke.menu('viewer')
mymenu = m.addmenu('mystuff')

给菜单添加icon
m = nuke.menu('viewer')
mymenu = m.addmenu('mystuff', icon = 'ohu_icon.png' )

1.png
创建自定义工具栏
mytoolbar = nuke.toolbar('my nodes')
2.png
给toolbar添加item和给menu添加一样
mytoolbar.addcommand(‘my gizmo’, lambda: nuke.createnode(‘noop’ ) )
如果没给item指定toolbar,那将成为一个按钮:
3.png
否则,item作为菜单项( 像默认工具栏那样):
mytoolbar.addcommand( 'my other tools/tool a', lambda: nuke.createnode( 'noop') ) mytoolbar.addcommand(' my other tools/tool b', lambda: nuke.createnode('noop') )
4.png
给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’))

5.png
创建自定义菜单项
给菜单添加自定义入口,请用menu.addcommand():
nuke.menu(‘nuke’).addcommand(‘mymenu/my tool 1’, lambda:nuke.message(‘yay, it works’ ))
注意:上面的例子中,我们创建了叫mymenu的菜单
6.png
利用lambda表达式创建的匿名函数要在菜单项调用时才执行,你可以将需要的命令打包进一个字符串:
nuke.menu(‘nuke’).addcommand(‘mymenu/my tool 2’, “nuke.message(‘yay, it works too’)” )
7.png
要设置菜单项的位置请使用index参数:
nuke.menu(‘nuke’).addcommand(‘mymenu/my tool 1.5’, “nuke.message(‘yay, it works too’)”, index = 1 )
8.png
通过名字找到菜单,并在前面添加一个分割线:
m = nuke.menu('nuke').finditem('mymenu')
m.addseparator()
nuke.menu('nuke').addcommand('mymenu/my tool 3', "nuke.message('yay, it works too')")

9.png
找到已存在的menu 项,并运行其函数:
m = nuke.menu(‘nuke’).finditem(‘edit/node/filename/show’)
m.invoke()

停用菜单项:
m = nuke.menu(‘nuke’).finditem(‘redner/proxy mode’)
m.setenable( false )
10.png
注意,菜单虽然禁止了,但快捷键依然可用。
绑定快捷键
给已存在菜单绑定快捷键,你可以有效地取代整个菜单项
给axis2节点绑定快捷键。这个节点在nodes菜单里(那就是,toolbar),在3d子菜单,其子项叫axis。
nuke.menu(‘nodes’).addcommand(‘3d/axis’, lambda:nuke.createnode(‘axis2’ ), ‘a’ )
现在键盘上的a就能创建axis节点。
11.png
当绑定快捷键时也可以修改. 用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。

via yiihuu

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-10 08:50 , Processed in 0.091659 second(s), 31 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部