GUI-Anwendung in Python schreiben

Während der Feiertage bin ich auf ein interessantes Problem bei meinen Eltern gestoßen. Sie pflegen eine Excel-Tabelle mit ihren DVD-Beständen, d. h. welcher Film ist in welcher Tasche. Allein die Meta-Informationen (Filmlänge, Genre etc.) fehlen. Da lässt sich doch sicher eine Anwendung für schreiben …

Close up of my Moleskine
Flickr: Close up of my Moleskine
von D. Keith Robinson (CC BY-NC)

Gesagt, getan. Ich möchte das Vorgehen hier in einer Artikel-Reihe beschreiben. Ganz fertig bin ich noch nicht, aber vielleicht kennt ja jemand von euch eine Lösung für mein Design-Problem … Die Anwendung ist in Python unter GNU/Linux geschrieben und sollte sowohl unter Python 2.7 als auch unter Python 3.4 laufen.

Die Anleitung gliedert sich in mehrere Teile:

  1. VirtualEnv einrichten und Abhängigkeiten installieren
  2. Grundlegendes Design entwickeln
  3. Input entgegennehmen
  4. Input verarbeiten
  5. Ergebnis aufbereiten

In diesem Artikel geht es um den ersten Schritt:

VirtualEnv einrichten und Abhängigkeiten installieren

Hä? VirtualEnv? Was ist denn das nun schon wieder?

Bei der Entwicklung von Anwendungen kann es passieren, dass verschiedene Projekte unterschiedliche Versionen von ihren Abhängigkeiten erwarten. Ich schreibe hier beispielsweise eine Anwendung für Python 2.7 (und 3.4). Du hast vielleicht ein etwas älteres Projekt, was noch Python 3.3 einsetzt. Würdest du jetzt alle Python Module systemweit installieren, könnte es schnell Konflikte geben, weil die Version “nicht passt”.

VirtualEnv richtet dir in einem Ordner deine “eigene Systemumgebung” ein, in der du für genau diese Python-Version die Module installieren kannst. Dabei wird pip eingesetzt, was easy_install ablöste.

Sofern noch nicht geschehen, installiere dir Python (sollte auf den meisten GNU/Linux-Distributionen vorinstalliert sein).

Danach holt euch pip (je nach Python-Version kann es dabei verschiedene Pakete geben).

Über pip holen wir uns jetzt virtualenv: sudo pip install virtualenv. Anschließend wird ein Ordner angelegt, in dem der Projekt-Code liegt sowie ein Ordner für die virtuelle Umgebung, letztere aktiviert und in das Projektverzeichnis gewechselt

cd $HOME
mkdir -p src/imdb-complemented-dvd  # Projektverzeichnis anlegen
mkdir -p .virtualenvs/imdb-complemented-dvd  # Ordner für VirtualEnv
virtualenv "$(pwd)"/.virtualenvs/imdb-complemented-dvd  # VirtualEnv anlegen
source "$(pwd)"/.virtualenvs/imdb-complemented-dvd/bin/activate  # VirtualEnv aktivieren
cd src/imdb-complemented-dvd  # wechsle ins Projektverzeichnis

Zum Prüfen, ob alles geklappt hat, folgende Befehle ausgeben:

  1. echo "$HOME"
  2. pwd
  3. echo "$VIRTUAL_ENV"

Die erste Ausgabe lautet im Allgemeinen etwas wie “/home/<DEIN_NUTZERNAME>“, die zweite hängt an die Ausgabe “/src/imdb-complemented-dvd” an, während die dritte “/.virtualenvs/imdb-complemented-dvd” anhängt. Bei Problemen lasst mir einen Kommentar da 😉

Da wir uns jetzt in einer VirtualEnv befinden, können wir munter fröhlich unsere Abhängigkeiten installieren. Ich verwende für die Anleitung Tkinter.

Aber Tkinter ist doch potthässlich und überhaupt?!

Ja, das war einmal. Allerdings ist laut Doku nur Qt und Tkinter Python-3-kompatibel. Die anderen GUI-Bibliotheken dürften als experimentell eingestuft werden. Und für Qt brauchst du eine Lizenz, sofern du die Anwendung kommerziell nutzt. Tkinter unterstützt zudem unterschiedliche Betriebssysteme.

  1. python -m Tkinter  # Ein kleines Demo-Fenster sollte auftauchen, ansonsten: python -m tkinter

Schon praktisch, wenn das Modul mitgeliefert wird, eh? Falls ihr Tkinter selber installieren wollt, müsst ihr es herunterladen und bauen. Von daher sehe ich hier einmal von einer projektspezifischen Installation ab.

Weitere Abhängigkeiten:

pip install imdbpy  # Python-Wrapper um IMDb-“API”
pip install xlrd  # Excel read, also zum Lesen von .xls
pip install xlwt  # Excel write, also zum Schreiben von .xls

Soll reichen für den Anfang 🙂 Danke für’s Lesen!

Ein Gedanke zu “GUI-Anwendung in Python schreiben

Hinterlasse einen Kommentar