Benutzer-Werkzeuge

Webseiten-Werkzeuge


scripter:mini-tutorial

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
Letzte ÜberarbeitungBeide Seiten, nächste Überarbeitung
scripter:mini-tutorial [2016/09/19 22:45] – Formulierung juliusscripter:mini-tutorial [2017/01/14 16:53] – [Mehrere Objekte bearbeiten] Link zu setStyle julius
Zeile 22: Zeile 22:
 </code> </code>
  
-Die erste Zeile legt fest, dass es sich um ein Python-Programm handelt.+Die erste Zeile legt fest, dass es sich um ein Python-Programm handelt und wird eigentlich nur benötigt, wenn man das Script stand-alone also außerhalb von Scribus ausführt und kann daher in Python-Scripten für Scribus weggelassen werden.
  
 Als nächstes legen wir die richtige Zeichenkodierung fest. Da der Standard in Python ASCII ist, sollten wir direkt das bessere UTF-8 wählen, um keine Probleme mit ä, ö und ähnlichen nicht-ASCII-Zeihen zu bekommen.\\ Als nächstes legen wir die richtige Zeichenkodierung fest. Da der Standard in Python ASCII ist, sollten wir direkt das bessere UTF-8 wählen, um keine Probleme mit ä, ö und ähnlichen nicht-ASCII-Zeihen zu bekommen.\\
Zeile 29: Zeile 29:
 ===== Einen Textrahmen anlegen ===== ===== Einen Textrahmen anlegen =====
 <file python textframe.py> <file python textframe.py>
-#!/usr/bin/env Python 
 # -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
 import scribus import scribus
Zeile 57: Zeile 56:
 Wenn Sie in Scripten [[scripter:dokument_befehle#unit_-typen|Längenangaben]] verwenden, werden diese immer in der Einheit des Dokuments interpretiert – erstellen Sie also ein Script und arbeiten immer mit Millimetern, funktioniert alles wie erwartet; wenn Sie das Script allerdings auf ein Dokument in der Maßeinheit Punkt anwenden, passen die Angaben allerdings nicht mehr. Die Lösung ist einfach: Am Anfang des Programms speichern sie die voreingestellte Maßeinheit in einer Variablen, setzen ihre Maßeinheit, führen Ihre Manipulationen am Dokument aus und setzen dann am Schluss die Maßeinheit wieder auf den vorherigen Wert zurück: Wenn Sie in Scripten [[scripter:dokument_befehle#unit_-typen|Längenangaben]] verwenden, werden diese immer in der Einheit des Dokuments interpretiert – erstellen Sie also ein Script und arbeiten immer mit Millimetern, funktioniert alles wie erwartet; wenn Sie das Script allerdings auf ein Dokument in der Maßeinheit Punkt anwenden, passen die Angaben allerdings nicht mehr. Die Lösung ist einfach: Am Anfang des Programms speichern sie die voreingestellte Maßeinheit in einer Variablen, setzen ihre Maßeinheit, führen Ihre Manipulationen am Dokument aus und setzen dann am Schluss die Maßeinheit wieder auf den vorherigen Wert zurück:
 <code python> <code python>
-#!/usr/bin/env Python 
 # -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
 import scribus import scribus
Zeile 79: Zeile 77:
 In diesem Beispiel wählen Sie //ein// Textfeld aus und führen dann ein Skript aus, das an den Text das aktuelle Datum und die Uhrzeit anfügt (deshalb auch ''insertText('Text', -1)'' (-1 für das Anhängen, sonst Positionsangabe im Text) statt ''setText'' wie im zweiten Beispiel, letzteres würde bereits vorhandenen Text ersetzen). In diesem Beispiel wählen Sie //ein// Textfeld aus und führen dann ein Skript aus, das an den Text das aktuelle Datum und die Uhrzeit anfügt (deshalb auch ''insertText('Text', -1)'' (-1 für das Anhängen, sonst Positionsangabe im Text) statt ''setText'' wie im zweiten Beispiel, letzteres würde bereits vorhandenen Text ersetzen).
 <file python insert-datetime.py> <file python insert-datetime.py>
-#!/usr/bin/env Python 
 # -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
 import scribus import scribus
Zeile 97: Zeile 94:
 Indem wir mit einer ''while''-Schleife über alle ausgewählten Objekte iterieren, können wir das Ganze natürlich auch für mehrere ausgewählte Textrahmen durchführen und an alle das aktuelle Datum anhängen: Indem wir mit einer ''while''-Schleife über alle ausgewählten Objekte iterieren, können wir das Ganze natürlich auch für mehrere ausgewählte Textrahmen durchführen und an alle das aktuelle Datum anhängen:
 <file python insert-multiple.py> <file python insert-multiple.py>
-#!/usr/bin/env Python 
 # -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
 import scribus import scribus
Zeile 114: Zeile 110:
    count = count + 1    count = count + 1
    scribus.insertText('\n'+zeit.strftime("→ %Y-%m-%d %H:%M"), -1, objekt)    scribus.insertText('\n'+zeit.strftime("→ %Y-%m-%d %H:%M"), -1, objekt)
 +</file>
 +
 +===== Mehrere Objekte bearbeiten =====
 +Indem man mit einer ''for''-Schleife über mehrere (ausgewählte) Objekte iteriert, lassen sich Operationen, die auf viele Objekte angewendet werden müssen, automatisieren. Im Beispiel wollen wir auf mehrere ausgewählte Textrahmen einen Absatzstil mittels [[scripter:objekte_erzeugen_und_bearbeiten#setstyle|setStyle]] anwenden, was über die Eigenschaften-Palette nicht möglich ist:
 +<file python setStyle.py>
 +# -*- coding: utf-8 -*-
 +import scribus
 +
 +anzahl = scribus.selectionCount()
 +
 +if anzahl >= 1:
 +  for i in xrange(0, anzahl):
 +    scribus.selectObject(scribus.getSelectedObject(i))
 +    scribus.setStyle("BeispielStil")
 +    #Namen anzeigen, falls benötigt...
 +    #scribus.messageBox("", str(i)+"=>"+scribus.getSelectedObject(i))
 +else:
 +  scribus.messageBox("Keine Objekte ausgewählt", "Es wurden keine Objekte ausgewählt, bitte wählen sie welche aus!", scribus.ICON_WARNING)
 </file> </file>
  
Zeile 135: Zeile 149:
 Einige Funktionen sind erst ab einer bestimmten Scribus-Version verfügbar, beispielsweise der [[seiten_befehle#applymasterpage|applyMasterPage()]]-Befehl. Um dem Nutzer eine verständliche Fehlermeldung an die Hand geben zu können, wenn man sich auf diese Funktionen verlässt, kann man die Scribus-Version abfragen und vergleichen: Einige Funktionen sind erst ab einer bestimmten Scribus-Version verfügbar, beispielsweise der [[seiten_befehle#applymasterpage|applyMasterPage()]]-Befehl. Um dem Nutzer eine verständliche Fehlermeldung an die Hand geben zu können, wenn man sich auf diese Funktionen verlässt, kann man die Scribus-Version abfragen und vergleichen:
 <file python version-abfragen.py> <file python version-abfragen.py>
-#!/usr/bin/env Python 
 # -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
 import sys, scribus import sys, scribus
scripter/mini-tutorial.txt · Zuletzt geändert: 2018/04/01 16:15 von julius