hin und wieder schreibe ich mir kleine Scripte um Tätigkeiten zu automatisieren, etwa wenn ich Daten zusammentragen und filtern muss. Nun habe ich das immer so gemacht, dass ich eine Laufmodus-Kennung als Parameter ans Skript übergebe und je nach Laufmodus rattert das Skript dann durch - ich bin mit Linux unterwegs und schrieb bis dato immer Shell-Scripts, schwenke aber nun im Bedarfsfall auf Python um.
Um die Skripte auch von Menschen bedienbar zu machen ala "einfach auf Datei klicken, Startblock lesen und je nachdem Aktion abfeuern" frage ich mich, nach welchem Schema ihr da eine Gui erstellt. Ich lernte nur den Umgang mit Java-Swing (Eigene Gui-Klassen von bestehenden Klassen ableiten und sich das genaue Zusammenspiel von Model-, View- und Controllerklassen überlegen) und etwas WxWidgets - ich will aber nicht an meiner Gui-Klasse für so etwas länger hackeln als am Skript, daher mache ich es aktuell wie folgt und freue mich auf Feedback.
Im Kern stehen oben globale Variablen, dann Folgen die Hilfsfunktionen, sofern ich welche brauche, dann die Event-Prozeduren und am Ende die 'main'-Funktion. Beim Ausführen startet ein kleines Tk-Fenster, darin eine Ansicht mit einer Minibeschreibung der Aktionen und dazu einem Menüpunkt mit einer Liste der Laufmodi zum Abschicken eines Anwendungsfalles. Dann startet ein zusätzliches neues Fenster mit Anwendungsfall-Ergebnis-Anzeige. Bis jetzt finde ich das ganz passabel, bin aber offen für Verbesserungsvorschläge. Hier das grobe Gerüst:
Code: Alles auswählen
#!/usr/bin/python3
import tkinter
import tkinter.messagebox
import tkinter.scrolledtext
# global vars ################################################################
# events ####################################################################
def cmd_rm01():
gstate = "rm01"
rm01f = tkinter.Toplevel(g)
tkinter.Label(rm01f, text="Runmode 01").pack()
rm01sp = tkinter.scrolledtext.ScrolledText(rm01f, width=100, height=25)
rm01sp.pack()
def cmd_ende():
g.destroy()
# global gui vars events ################################################
g = tkinter.Tk()
gf = tkinter.Frame( g, height=400, width=500, bg="#FFFFFF", bd=5 )
gf.pack()
mBar = tkinter.Menu(g)
mActions = tkinter.Menu(mBar)
mActions.add_command(label="Runmode01", command=cmd_rm01)
mActions.add_separator()
mActions.add_command(label="Beenden", command=cmd_ende)
mBar.add_cascade(label="Aktionen", menu=mActions)
g["menu"] = mBar
s = ""
s += "\n"
s += "************* INFO ******************** \n"
s += "\n"
s += "Runmode 01: ...\n"
s += "\n"
tkinter.Label(gf, text=s).pack()
# main ######################################################################
g.mainloop()