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

能否通过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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 23:41:05