Tja, das Besondere an PythonFu ist, dass man die "Power" von Python benutzen kann, und da ist eine ganze Menge Mathematik und vieles Andere mehr drinnen versteckt!
Hier ein, finde ich, schönes Beispiel:
Wie findest du die liste aller Pinsel und zwar als Text?
Ich hab es so gemacht:
Code:
GIMP 2.8.18 Python Console
Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)]
>>> from string import lowercase
>>> allbrushes = set()
>>> for alpha in lowercase:
... tmp = pdb.gimp_brushes_get_list(alpha)
... allbrushes = allbrushes.union(set(tmp[1]))
...
>>> allbrushes = list(allbrushes)
>>> print len(allbrushes)
55
>>> allbrushes
['Acrylic 05', 'Acrylic 04', 'Acrylic 01', '1. Pixel', 'Acrylic 03', 'Acrylic 02', 'Sparks', 'Galaxy (AP)', 'Vegetation 01', 'Splats 01', 'Splats 02', 'Vegetation 02', 'Pencil 01', 'Pencil 02', 'Cell 02', '2. Hardness 100', 'Charcoal 01', 'Cell 01', '2. Block 01', 'Charcoal 02', 'Sand Dunes (AP)', 'Oils 03', 'Texture 01', '2. Hardness 025', 'Texture Hose 03', 'Texture Hose 02', 'Texture Hose 01', 'Oils 01', '2. Hardness 075', 'Pencil Scratch', 'Confetti', 'z Pepper', 'Bristles 03', 'Bristles 02', 'Bristles 01', 'AC_brush', '2. Block 02', 'Chalk 02', 'Pixel (1x1 square)', 'Oils 02', 'Sponge 02', 'Sponge 01', 'Grass', 'Galaxy, Big', 'Vine', '2. Hardness 050', '2. Star', 'Animated Confetti', 'Clipboard', 'Structure', 'Smoke', 'Texture 02', 'Chalk 03', '2. Block 03', 'Chalk 01']
>>>
Streich 1. man kann sich das in kleinen Buchstaben einfach importieren, anstatt alle 26 Buchstaben selbst einzugeben:
from string import lowercase
Streich 2. Dann macht man sich eine sogenannte Menge ( = set in Python) (Mengenlehre in Mathe), das ist so zu sagen eine Eimer, wo man hinein packen kann was man will! Das besondere an einer Menge ist, dass das was drinnen ist nur EINMAL vorkommt:
>> set((1,1,2,3 , "peter", 1, 2,1,1)) #ergibt ==> die 1 ist nur noch EINMAL vorhanden
set([1, 2, 3, 'peter'])
>>>
Warum braucht man das manchmal? Hier weil die Funktion
pdb.gimp_brushes_get_list einen Text (sag Buchstaben) als Parameter nötig hat, und wenn man keinen Pinsel mit seinem Namen kennt, sucht man z.B. nach allen Pinseln mit Hilfe von einem "a"

.
Das ergibt dann eine ganze Menge Pinsel-Namen, nämlich ein a kommt im Namen VIELER Pinsel vor!
Einen lehren 'Eimer' (Menge!) macht man sich in Python so:
allbrushes = set() Nicht zwischen ()
!!
Streich 3. wir holen uns für das ganze Alphabet (lowercase)
for alpha in lowercase:
alle Pinselnamen
, erst mal holen tmp = ... und dann die Mathe von Mengen benutzen nämlich einen zweiten 'Eimer' (set) in einen anderen kippen aber alle schon vorhandenen nicht noch einmal und in Python macht das die
union Funktion! Und weil
pdb.gimp_brushes_get_list(alpha) zwei Dinge gleichzeitig abliefert, nämlich die gefunden Anzahl und danach alle gefundenen Namen der Pinsel mit dem Buchstaben, alpha gerade ist, im Namen ist oben noch ein [1] nötig, die Anzahl ist in tmp das Erste (= [0]) , was wir hier nicht gebrauchen ... . tmp[1] ist für Python keine Menge und man konvertiert das durch set(...) zu schreiben. OK?
Streich 4.
Wir machen aus der Menge (set) eine Liste durch
allbrushes =
list(allbrushes) die Menge in eine Liste (list) zu konvertieren.
Streich 5. und 6. Eben noch anzeigen wie viel Pinsel im Moment vorhanden sind und dann auch anzeigen.
KLAR!
Andere Eigenschaften von Mengen in Python kommen (vielleicht) noch an die Reihe, wenn es passt.