Forum Wiki Galerie Kontakt Wie man Fragen richtig stellt. Tutorial Forum
Zurück   GIMP-Forum 3.0 > Arbeiten mit Gimp > GIMP-Ressourcen > Skripte

Hinweise
Alt 10.09.2016, 16:28   #1
PeterPKHG
Erfahrener Benutzer
 
Registriert seit: 20.07.2016
Beiträge: 376
Standard PythonFu wird einfach, wenn ...! Nr. 1

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.

Geändert von PeterPKHG (10.09.2016 um 17:05 Uhr)
PeterPKHG ist offline   Mit Zitat antworten
 

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PythonFu Plugin, mehrere Versionen, mit Übungen. War: ein letzter Versuch PeterPKHG Skripte 20 09.09.2016 08:04
Objekte einfach freistellen Klopper Hilfe und Fragen 9 12.07.2013 15:00
Einfach toll!!! Claas Grundlagen 4 08.08.2007 02:12


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:21 Uhr.


Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.