9 Python-Scripts

Jedes Widget kann ein Python-Script besitzen, das ausgeführt wird, sobald sich eine seiner Script-Variablen ändert. So lassen sich zum Beispiel Widgets abhängig von Prozesswerten aktivieren oder deaktivieren oder in ihrem Erscheinungsbild verändern.

9.1 Script-Editor

Wählen Sie im Editiermodus ein Widget aus und öffnen Sie das Dock Python-Script (oder wählen Sie Script bearbeiten... aus dem Kontextmenü des Widgets).

Python-Script-Editor

Die Tabelle im oberen Bereich enthält die Script-Variablen. Ziehen Sie Prozessvariablen aus dem Datenquellen-Baum in die Tabelle. Die Spalte Name legt fest, unter welchem Namen die Variable im Script verfügbar ist; Periode [s] legt die Abtastzeit fest.

Hinweis

Ein Signal kann innerhalb einer Verbindung zu einem Prozess entweder ereignisbasiert (Periode 0) oder periodisch (Periode > 0) übertragen werden (siehe Kapitel Datenquellen).

Das Script muss eine Funktion update() definieren, die aufgerufen wird, wenn sich eine Variable ändert. Innerhalb des Scripts verweist widget auf das Widget, zu dem das Script gehört.

# Enable widget based on the value of the 'enable' variable
def update():
    widget.setEnabled(enable.getValue())

Klicken Sie mit der rechten Maustaste in den Editor, um Vorlagen einzufügen.

Script-Vorlagen

9.2 Scripts und Stylesheets kombinieren

Ein Script kann dynamische Eigenschaften setzen, die vom Stylesheet ausgewertet werden:

def update():
    widget.setProperty('highlight', highlight.getValue())
QWidget[highlight=true] {
    background-color: yellow;
}
Hervorhebung per Script und Stylesheet

9.3 Fehlermeldungen

Syntaxfehler werden mit der Zeilennummer angezeigt. Wird keine aufrufbare Funktion update() gefunden, wird dies ebenfalls angezeigt.

Script-Fehler

9.4 Python-Kommandozeile

Das Dock Python-Kommandozeile stellt einen interaktiven Python-Interpreter bereit, der seine Umgebung mit den Scripts teilt. Ausgaben von print() in Scripts erscheinen hier.

Python-Kommandozeile

Alle verfügbaren Objekte und Funktionen finden Sie in der Python-API-Referenz.