>>> pdb.gimp_file_load.nparams
3
>>> pprint.pprint(pdb.gimp_file_load.params)
((0,
'run-mode',
'The run mode { RUN-INTERACTIVE (0), RUN-NONINTERACTIVE (1) }'),
(4, 'filename', 'The name of the file to load'),
(4, 'raw-filename', 'The name as entered by the user'))
>>> fname = 'a filename'
>>> img = pdb.gimp_file_load(gimpfu.RUN_NONINTERACTIVE, fname, fname)
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: wrong number of parameters
那么,我在这里做错了什么?根据该方法本身,它需要三个相当好的文档参数。我把它想要的三件事传递给我,我收到TypeError
。所以:
在参数的元组中,有一个0,一个4和一个4.这些魔术常数是什么?根据{{3}},这些似乎是:
参数类型(PARAM_ *常量之一)
但是在这些文档中我找不到PARAM_
常量,我没有发现它们反省了pdb,gimp或gimpfu。
只是为了完成:显而易见的help(pdb.gimp_file_load)
,并没有那么有用:
>>> help(pdb.gimp_file_load)
Help on PDBFunction object:
class PDBFunction(__builtin__.object)
| Methods defined here:
|
| __call__(...)
| x.__call__(...) <==> x(...)
|
| __repr__(...)
| x.__repr__() <==> repr(x)
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| nparams
|
| nreturn_vals
|
| params
|
| proc_author
|
| proc_blurb
|
| proc_copyright
|
| proc_date
|
| proc_help
|
| proc_name
|
| proc_type
|
| return_vals
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| __new__ = <built-in method __new__ of type object>
| T.__new__(S, ...) -> a new object with type S, a subtype of T
答案 0 :(得分:4)
GIMP的“过程数据库”和围绕它的Python包装器之间的抽象似乎有些漏洞。 run_mode
,AFAICT,是一个特殊的孩子,是一个可选的,仅限关键字的参数。例如,这有效:
>>> img = pdb.gimp_file_load(fname, fname, run_mode=gimpfu.RUN_NONINTERACTIVE)
>>> img
<gimp.Image 'fname.xcf'>
正如this source所说:
程序浏览器到Python:
- 将破折号更改为下划线
- 省略任何运行模式参数
- 将-1更改为无
(强调我的);你真的不需要省略它,它只需要一个关键字arg。 (正如我的例子所示。)关键字args必须遵循Python中的非关键字args。你也可以把它关掉,我猜它会假定某种默认值。 (我不知道哪个。)
据推测,我在问题中对此感到好奇的“PARAM_
”常数揭示了这一点,除了我在文档或内省中找不到整数的符号/命名版本。
答案 1 :(得分:1)
我发现有些额外的资源可以帮助我自己回答这样的问题:
例如,我认为PARAM_
类型是这些enum
值,用于定义插件所采用的每个参数的类型:(大概PF
用于“PythonFu”和“PDB” “是为”程序数据库“)
PF_INT8 : PDB_INT8,
PF_INT16 : PDB_INT16,
PF_INT32 : PDB_INT32,
PF_FLOAT : PDB_FLOAT,
PF_STRING : PDB_STRING,
#PF_INT8ARRAY : PDB_INT8ARRAY,
#PF_INT16ARRAY : PDB_INT16ARRAY,
#PF_INT32ARRAY : PDB_INT32ARRAY,
#PF_FLOATARRAY : PDB_FLOATARRAY,
#PF_STRINGARRAY : PDB_STRINGARRAY,
PF_COLOR : PDB_COLOR,
PF_ITEM : PDB_ITEM,
PF_DISPLAY : PDB_DISPLAY,
PF_IMAGE : PDB_IMAGE,
PF_LAYER : PDB_LAYER,
PF_CHANNEL : PDB_CHANNEL,
PF_DRAWABLE : PDB_DRAWABLE,
PF_VECTORS : PDB_VECTORS,
PF_TOGGLE : PDB_INT32,
PF_SLIDER : PDB_FLOAT,
PF_SPINNER : PDB_INT32,
PF_FONT : PDB_STRING,
PF_FILE : PDB_STRING,
PF_BRUSH : PDB_STRING,
PF_PATTERN : PDB_STRING,
PF_GRADIENT : PDB_STRING,
PF_RADIO : PDB_STRING,
PF_TEXT : PDB_STRING,
PF_PALETTE : PDB_STRING,
PF_FILENAME : PDB_STRING,
PF_DIRNAME : PDB_STRING,
PF_OPTION : PDB_INT32,