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

GIMP Python-fu 如何弹出目录选择对话框

解决步骤

GIMP 2.10 的 Python-Fu 基于 Python 2.7 和 GTK+ 2,不适合再使用 Tkinter。Tcl/Tk 没有随 GIMP 一起提供,因此会出现你看到的安装错误。

选择目录应直接使用 PyGTK 的文件选择对话框:

import gtk

def select_directory(title=u"选择目录"):
    dialog = gtk.FileChooserDialog(
        title=title,
        parent=None,
        action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
        buttons=(
            gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
            gtk.STOCK_OK, gtk.RESPONSE_OK
        )
    )

    try:
        response = dialog.run()

        if response == gtk.RESPONSE_OK:
            return dialog.get_filename()

        return None
    finally:
        dialog.destroy()

调用方式如下:

folder = select_directory()

if folder is None:
    # 用户取消了选择
    return

返回值就是所选目录的路径。随后可以用标准库遍历文件:

import os

for filename in os.listdir(folder):
    path = os.path.join(folder, filename)

    if os.path.isfile(path) and filename.lower().endswith((".jpg", ".jpeg")):
        image = pdb.gimp_file_load(path, path)

        # 在这里处理 image
        # 保存后可删除内存中的图像
        pdb.gimp_image_delete(image)

如果只需要按规则收集文件,也可以使用 glob:

import glob

paths = glob.glob(os.path.join(folder, "*.jpg"))
可用的库

GIMP 2.10 中通常可以直接使用:

  • os、os.path、glob、sys、re、shutil、codecs 等 Python 2.7 标准库
  • gtk、gobject、pango 等 GTK+ 2 相关库
  • gimp、gimpui、gimpfu 和 pdb 等 GIMP Python-Fu 模块

不要在 GIMP 内部使用 Tkinter;GIMP 本身的界面工具包是 GTK,文件选择对话框也应使用它。

最终答案

GIMP 没有提供 pdb.open_directory 这样的目录选择过程。应使用随 GIMP 提供的 PyGTK,创建 gtk.FileChooserDialog,并把动作设置为 gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER。取得目录路径后,用 os 或 glob 读取和处理其中的多个文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 06:45:04