Über unsMediaKontaktImpressum
Veikko Krypczyk 22. März 2022

Python: Eine schicke Oberfläche für intelligente Skripte

Grafische Benutzeroberflächen für Python-Skripte erstellen

Python ist als Programmiersprache für wissenschaftliche Berechnungen, Data Science, Datenauswertungen und für Experimente rund um die künstliche Intelligenz bekannt. Es gibt zahlreiche Bibliotheken, Tools und interaktive Werkzeuge, um datenbasierte Probleme zu lösen und Modelle der künstlichen Intelligenz zu trainieren. Um diese Applikationen mit einer ansprechenden grafischen Oberfläche auszustatten, gibt es unterschiedliche Ansätze. Auch die Kombination mit anderen Programmiersprachen und der Einsatz einer integrierten Entwicklungsumgebung mit einem grafischen Designer ist möglich.

Python ist bekanntermaßen eine Allzwecksprache, welche bei vielen Entwicklern und für die Lösung von unterschiedlichsten Aufgaben sehr beliebt ist. Gerade im Umfeld von Data Science, Big Data, Cloud Computing, künstlicher Intelligenz und maschinellem Lernen spielt die Programmiersprache mit ihrer einfachen Syntax und einer sehr großen Anzahl von spezialisierten Bibliotheken aus dem Bereichen KI, Mathematik und Statistik ihre Stärken aus. Programmiert wird dabei mit einem beliebigen Editor.

Für wissenschaftliche Experimente, für Datenauswertung, für Lern- und Forschungszwecke gibt es die sogenannten Jupyter-Notebooks, welche eine direkte Kombination von Quellcode, Dateneingabe und der Anzeige von errechneten Ergebnissen ermöglichen. Entwickler und Data Scientists können hier interaktiv KI-basierte Modelle trainieren, Daten mit statistischen Methoden auswerten und interaktive Diagramme erstellen (Abb. 1).

Möchte man die Möglichkeiten eines Python-Programms auch einer breiten Anwendergruppe zugänglich machen, dann braucht man eine ansprechende grafische Benutzeroberfläche. Auch hier gibt es einige Ansätze rund um Python. Zu nennen sind beispielsweise:

  • Tkinter: Es handelt sich um das Standard User Interface für grafische Oberflächen, welche mit Python erstellt werden. Dazu bindet es das Toolkit Tk, welches ursprünglich für die Sprache TCL (Tool Command Language) entwickelt wurde, ein. Tkinter ist direkt in der Standardbibliothek von Python enthalten. Möglich ist das Erstellen von grafischen Benutzeroberflächen, ohne eine zusätzliche Bibliothek zu installieren, zu referenzieren und zu nutzen. Geeignet ist Tkinter für einfache grafische Benutzeroberflächen [1].
  • PyQt: Über diese Bibliothek wird das Toolkit Qt angebunden, welches die Basis der Desktop-Umgebung KDE (K Desktop Environment) unter Linux-Distributionen ist. Qt steht jedoch auch plattformübergreifend zur Verfügung und kann für freie Software kostenfrei verwendet werden. Für eine kommerzielle Nutzung von Qt fallen Lizenzgebühren an. Qt selbst ist in der Programmiersprache C++ entwickelt [2].
  • PyGObject: Es wird das Grafik-Toolkit GTK verwendet. GTK (GIMP Toolkit) wurde ursprünglich für das Grafikprogramm GIMP entwickelt. Es handelt sich ebenfalls um ein plattformübergreifendes Framework, welches häufig für grafische Benutzeroberflächen eingesetzt wird. Das GTK-Toolkit ist Basis der Desktop-Umgebung GNOME. Es ist in C programmiert und kann dennoch auch in objektorientierten Programmen verwendet werden [3].
  • wxPython: Es wird mit dem plattformübergreifenden Grafikframework wxWidgets gearbeitet. Das Ziel von wxWidgets ist es, die Besonderheiten der jeweiligen Zielplattform möglichst gut abzubilden. Es zeichnet die Controls nicht selbst, sondern verwendet die APIs der Zielsysteme [4].

Diese Auswahl an Grafikframeworks ist längst nicht vollständig. Eine Übersicht zur Anbindung unterschiedlicher Frameworks zum Erstellen von grafischen Benutzeroberflächen (GUI) steht online zur Verfügung [5]. Gelistet werden GUI-Frameworks für Web-Applikationen, für Cross-Plattform-Anwendungen und für ausgewählte Betriebssysteme. Ebenso gibt es eine Liste zu Design-Tools und integrierten Entwicklungsumgebungen, welche sich für eine Nutzung mit Python eignen.

Mit Tkinter zum minimalistischen User Interface

Tkinter ist eine Standardbibliothek von Python, daher ist keine separate Installation notwendig. Sie können jeden beliebigen Editor zum Erstellen der Oberflächen verwenden. Hilfreich ist eine Syntaxunterstützung für die Programmiersprache Python. Ein "Hello World"-Programm sieht wie folgt aus:

from tkinter import *# Ein Fenster erstellen
window = Tk()
# Den Fenstertitle erstellen
window.title("Hello World")
# Ereignisschleife auf Reaktion des Benutzers warten.
window.mainloop()

Man importiert als erstes das Modul tkinter (from tkinter import *). Danach wird ein neues Fenster erstellt (window = Tk()), die Eigenschaft title erhält einen konstanten Wert zugewiesen und die Programmschleife wird gestartet (window.mainloop()). In dieser Programmschleife verweilt die Anwendung und wartet auf Reaktionen des Anwenders, ggf. auf ein Beenden, d. h. Schließen des Programmfensters.

Nach dem Speichern des Quellcodes, zum Beispiel in einer Datei unter dem Namen Hello.py, kann das Programm gestartet werden. Das kann direkt von der Kommandozeile aus geschehen oder über die minimalistische Entwicklungsumgebung IDLE, welche mit der Installation von Python auf dem Rechner eingerichtet wurde. Das Skript führt man mit Datei öffnen und dann über Run | Run Module… aus. Nach dem Kompilieren und Interpretieren des Quellcodes startet das Programm und zeigt die grafische Oberfläche an (Abb. 2). In diesem Fall lediglich ein leeres Fenster.

Auch Interaktion, zum Beispiel die Reaktion bei einem Klick auf einen Button, ist möglich. Dazu geht man wie folgt vor:

def button_action():
    messagebox.showinfo(message="Eine Meldung", title = "Infos")
   
button=Button(window, text="OK", command=button_action)

In diesem Fall würde ein Fenster mit einem Button eingeblendet. Wenn man auf diesen klickt, dann wird eine Meldung ausgegeben.

Tkinter bietet eine Reihe von Basis-Steuerelementen zum Erstellen von grafischen Oberflächen, das sind u. a.: Button, Canvas, Checkbutton, Entry, Label, Listbox, Menu usw. Damit kann man auch komplexere Oberflächen erstellen. Oftmals gilt jedoch, dass man mit "handcodierten" Benutzeroberflächen nur eingeschränkt produktiv ist. Beispielsweise ist die manuelle Codierung von umfassenden Datenformularen sehr aufwändig. Meist kann man auf diese Weise die Möglichkeiten zur Gestaltung moderner Benutzeroberflächen nicht ausschöpfen. Komplexere grafische Steuerelemente sind über Tkinter nicht verfügbar. Einfacher, effizienter und mit einem deutlich größeren Funktionsumfang geht es, wenn man zum Erstellen der Benutzeroberflächen ein alternatives Grafikframework und eine integrierte Entwicklungsumgebung mit einem grafischen Designer verwendet.

Datenauswertung mit Python – Oberfläche mit Delphi

Sinnvoll und produktiv ist die Kombination der Programmiersprache Python mit der integrierten Entwicklungsumgebung Delphi. Mit Delphi kann man native Anwendungen für unterschiedliche Betriebssysteme erstellen. Konzentriert man sich auf Microsoft Windows, dann kommt dabei die Visual Component Library (VCL) zum Einsatz. Möchte man dagegen plattformübergreifende Applikationen erstellen, dann setzt man das Grafikframework FireMonkey (FM) ein. Bei beiden Grafikframeworks arbeitet man innerhalb der integrierten Entwicklungsumgebung mit einem grafischen Designer. So können Applikationen erstellt werden, welche auch in Bezug auf Design und User Experience keine Einschränkungen aufweisen. Komplexe Oberflächen für die Dateneingabe (Formulare) und Datenausgabe (Tabellen, Charts) sind kein Problem.

Um eine Interaktion zwischen einem Python-Programm und einem Delphi-Programm mit grafischer Benutzeroberfläche zu realisieren, stehen die beiden Bibliotheken DelphiVCL und DelphiFMX zur Verfügung. Python-Applikationen können auf diese Weise die Features einer modernen grafischen Oberfläche verwenden. Auch weitere, in Delphi geschriebene, native Module können aus Python genutzt werden. Ebenso ist der umgekehrte Weg möglich, d. h. aus einer Delphi-Anwendung kann man direkt mit den innovativen Skripten und Bibliotheken in Python interagieren und erhält einen direkten Zugriff auf die Welt des Data Science und der künstlichen Intelligenz. Die Zusammenarbeit zwischen beiden Programmiersprachen und Tools stellt sich dann wie folgt dar:

  1. Erstellung des Python-Skriptes zum Beispiel mit Hilfe eines leichtgewichtigen Editors, wie zum Beispiel PyScripter [6] oder einem beliebigen anderen Editor mit Syntax Highlighting (Abb. 3).
  2. Erstellung eines Programms mit grafischer Benutzeroberfläche im Designer von Delphi (Abb. 4).
  3. Interaktion zwischen beiden Programmen über die o. g. Bibliotheken. Dazu stehen sogenannte nicht visuelle Komponenten zur Verfügung, um Python-Skripte aus Delphi auszuführen und die Ergebnisse der Berechnungen anzuzeigen.

Die Kombination aus den beiden Welten ermöglicht es, Anwendungen aus dem Bereich Datenanalyse, KI usw. zu erstellen und dabei die Leistungsfähigkeit von Python und den zugehörigen Bibliotheken zu nutzen.

Leistungsfähige Python-Bibliotheken einsetzen

Auf diesem Weg hat man von beliebigen Applikationen für Windows (VCL) oder plattformübergreifend (Windows, macOS, Linux, iOS und Android) einen Zugriff auf den riesigen Fundus von Python-Bibliotheken, zum Beispiel:

  • TensorFlow: Modelle für maschinelles Lernen erstellen und anwenden.
  • Numpy: Nutzung für Datenbereinigung und -manipulation.
  • Pandas: Anwendung für Datenmanipulation und -analyse, insbesondere werden Datenstrukturen und Operationen zur Bearbeitung von numerischen Daten in Tabellen und Zeitreihen angeboten.
  • Scikit-Learn: Erstellung von Modellen für maschinelles Lernen.
  • Natural Language Toolkit: Durchführung einer inhaltlichen Textanalyse.
  • SciPy: Methoden des Data Science, enthält u. a. Module für Optimierung, lineare Algebra, Integration, Interpolation.
  • Matplotlib, Seaborn: Nutzung für die Visualisierung von statistischen Daten.
  • Pillow, MoviePy: Algorithmen für die Bild- und Videoverarbeitung.

Aus der Anwendung können die Python-Skripte ausgeführt und dabei die genannten Bibliotheken genutzt werden.

Fazit

Manchmal finden zwei zusammen, an deren Harmonie man gar nicht denkt. Das ist bei den beiden Programmiersprachen Delphi und Python der Fall. Die Programmiersprache Python aus den 1990er Jahren erlebt aktuell rund um das Thema Data Science und KI eine sehr starke Verwendung. Sollen erstellte Modelle und Analysewerkzeuge den Forschungs- und Experimentierstatus verlassen, dann benötigt man zum Beispiel eine grafische Benutzeroberfläche oder eine externe Steuerung des Python-Skriptes. Dazu kann man Python mit anderen Programmiersprachen und Entwicklungstools kombinieren. Das gelingt einfach – wenn es entsprechende Bibliotheken, wie die hier vorgestellten Varianten für Delphi, gibt.

Autor

Dr. Veikko Krypczyk

Dr. Veikko Krypczyk arbeitet u. a. als Softwareentwickler, Fachautor und Dozent. Über die Firma LARInet gibt er darüber hinaus sein Wissen in Schulungen zu aktuellen Fragestellungen der IT weiter.
>> Weiterlesen
Das könnte Sie auch interessieren
Kommentare (0)

Neuen Kommentar schreiben