能否通过Script-Fu修改设备绑定的活动工具?欲创建切换快捷键
关于Script-Fu实现工具切换快捷键的问题
Script-Fu确实无法直接实现你想要的「切换UI层面活动工具」的功能。
你遇到的问题本质是:gimp-context-set-paint-method仅作用于Script-Fu脚本自身的执行上下文——它的作用是让脚本后续的绘图操作使用指定的画笔/工具,但不会同步修改GIMP主界面中当前激活的工具。Script-Fu的上下文和GIMP UI的工具状态是完全分离的,它设计的初衷是为脚本内部操作提供临时环境,而非操控UI交互状态。
如果要实现通过快捷键切换两个常用工具的需求,更推荐使用Python-Fu编写脚本,因为Python-Fu可以调用GIMP的UI相关接口,直接触发主界面的工具切换。
举个切换画笔和橡皮擦的简单示例:
from gimpfu import * import gtk def switch_to_target_tool(tool_action_id): # 获取GIMP主窗口对象 main_window = gtk.Window.list_toplevels()[0] # 获取工具动作组并触发指定工具的激活动作 tool_action_group = main_window.get_action_group("tools") target_action = tool_action_group.get_action(tool_action_id) if target_action: target_action.activate() def toggle_brush_eraser(): # 获取当前上下文的绘图工具 current_paint_method = pdb.gimp_context_get_paint_method() # 根据当前工具切换到对应目标 if current_paint_method == "gimp-brush": switch_to_target_tool("tool-eraser") else: switch_to_target_tool("tool-brush") # 注册脚本到GIMP菜单 register( "python_fu_toggle_brush_eraser", "Toggle Brush/Eraser", "Switch active tool between Brush and Eraser", "Your Name", "Your Name", "2024", "<Image>/Tools/Toggle Brush-Eraser", "*", [], [], toggle_brush_eraser) main()
将这个脚本保存为.py文件放到GIMP的Python脚本目录后,重启GIMP就能在「工具」菜单里找到对应的选项,之后你可以在GIMP的「编辑-快捷键」设置中给这个菜单选项绑定自定义快捷键,实现一键切换工具的效果。
内容的提问来源于stack exchange,提问作者tanaka
相关产品推荐
相关产品推荐

