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
相关产品推荐
相关产品推荐

