|
|
Konsole und GUI mischen |
|---|
Wie bin ich eigentlich bisher immer vorgegangen? Es war doch immer der
gleiche Ablauf. Python zeichnet sich neben seiner Funktionalität
und seiner guten Lesbarkeit auch dadurch aus, dass man eben einfach mal
ganz schnell etwas automatisieren kann, was man sonst mit der Hand
immer und immer wieder mühselig eintippen muß.
Dadurch kam es meist so, dass ich schnell ein
Konsolenprogramm
"zusammengezimmert" habe, was zumindest erst mal die Arbeit machte.
Damit war die angestrebte Erleichterung eigentlich schon da. Also alles
gut und fertig?
Na nicht ganz. Beim häufigen Benutzen des Programms kamen meist
verschiedene kleine Verbesserungen hinzu. Auch Fehler wuren sichtbar,
die schnell behoben wurden. Kurzum, das Konsolenprogramm wurde
immer besser, erledigte seine Aufgabe immer zuverlässiger. Im
Idealfall wird es unentbehrlich, wenn nicht das spartanische Aussehen
wäre. Für mich selbst wäre das ja noch
gleichgültig, aber falls man mal einen Kollegen an den
Früchten der eigenen Arbeit teilhaben lassen möchte und der
nun grade nicht auf Textmodus steht, sollte man die Oberfläche
etwas veredeln. Eine GUI muss her. Also das Konsolenprogramm auf
eine Funktionssammlung zurechtgestutz und mit Tkinter eine
Oberfläche drübergelegt. So war es immer. Aber warum
eigentlich immer "entweder/oder"?
Für den hier beschriebenen Fall mag das alles
vernünftig
sein. Aber oft war es garnicht mein Ziel, eine perfekte Oberfläche
zu schaffen, sondern ich nutzte Tkinter, weil die Widgets Funktionen
zuließen, die ich sonst nicht gehabt hätte. Da ist zum
Beispiel etwas, worüber ich mich schon ewig ärgere, dass man
in raw_input keinen vorgewählten Text einstellen kann. Ich meine
damit Text, der dem mit der Hand eingegebenen Text gleichgestellt ist
und vor dem Ende der Eingabe mit <Enter> noch editiert werden
kann. Aber deshalb gleich in die C-Programmierung einzusteigen, scheint
mir auch zu aufwendig. Dabei kann das Entry-Widget aus Tkinter genau
dies. Warum es nicht dafür nutzen, aber trotzdem auf Konsolenebene
verbleiben?
Auf diese Idee kam ich erst, als ich mal ein Codebeispiel in "Python-gepackt" gesehen habe, wo der Autor eigentlich nur die Möglichjkeit der Umlenkung der Standardausgabe demonstrieren wollte. Er lenkte sie einfach auf ein Tkinter-Textfenster um. Alle print - Befehle landeten nun in diesem Fenster, während das Hauptprogramm weiter in der Konsole lief. Warum sollte etwas ähnliches nicht auch mit der Eingabe gehen?
Das könnte dann etwas so aussehen:

