Forum: Projekte & Code GUI für AVR-NET-IO mit Python 3.2 und Tkinter/Grid-Manager


von Michael S. (Gast)


Angehängte Dateien:

Lesenswert?

GUI für AVR-NET-IO mit Python 3.2 und Tkinter/Grid-Manager

Zum Ausloten der grafischen Gestaltungsmöglichkeiten, die Python 3.2 / 
Tkinter bieten, habe ich mich am Aufbau eines GUI für ein AVR-NET-IO 
versucht.

Bekanntlicherweise können bei dem Testobjekt der Status von 4 Input-Pins 
und die anliegende Spannung an 4 ADC's ausgelesen sowie 8 Output-Pins 
gesetzt werden.

Zusätzlich gibt es die Möglichkeit, am AVR-NET-IO ein 2*16 Zeilen-LCD 
anzuschließen und darauf Texte auszugeben.
Die beiden LCD-Zeilen können beschrieben werden - sofern ein LCD erkannt 
wird.

Ein Screendump sowie der Quellcode ist beigefügt.

mfg

Michael S.

von Michael S. (Gast)


Angehängte Dateien:

Lesenswert?

GUI für AVR-NET-IO mit Python 3.2 und Grid-Layoutmanager

Während es mir in der ersten Programmversion in erster Linie um den 
Aufbau einer grafischen Benutzeroberfläche ging (außen GUI, innen PFUI), 
habe ich nun noch die mehrfach verwendeten Eingabe-/Ausgabeelemente 
zusammen mit ihren Methoden in das Klassenkorsett gezwängt.

Dadurch wird in der Tat den Programmcode deutlich übersichtlicher und 
die vielen globale Variablen werden entbehrlich.

Außerdem lassen sich die Klassen unabhängig von der übrigen Umgebung 
einfacher entwickeln und testen.

Allmählich verstehe ich den Vorteil objektorientierter Progammierung ...

mfg

Michael S.

von Michael S. (Gast)


Angehängte Dateien:

Lesenswert?

GUI für AVR-NET-IO mit Python 3.2 und Grid-Layoutmanager

Als letzte Überarbeitung ist nun auch noch die LCD-Eingabe-Zeile als 
Klasse definiert.
Damit sind alle Elemente, die mehrfach benutzt werden, in Klassen 
organisiert.

Zum Vergleich habe ich einen Zwischenstand dieser Übung, die 
"klassenlose" GUI-Variante mit ins Archiv gepackt.

Die Stukturierung durch die Objektorientierung macht den Programmcode 
deutlich besser lesbar und vermeidet eine unübersichtliche Variablen- 
und Funktionsvielfalt.

Für den Einstieg in die GUI-Programmierung mit Python war der 
beschrittene Umweg ohne Objekte hilfreich - und für das Verständnis der 
Zusammenhänge auch nicht vermeidbar ...

Übrigens läßt sich das Programm auch ohne die Präsenz eines AVR-NET-IO 
starten.

mfg

Michael S.

von Michael S. (Gast)


Lesenswert?

GUI für AVR-NET-IO mit Python 3.2 und Grid-Layoutmanager

Doch noch ein Nachtrag.

Bei einigen der neuen Klassen habe ich die Methode grid() doppelt 
benutzt:
zuerst in der Klassendefinition selbst und dann noch ein weiteres Mal 
beim Anlegen einer Instanz.

Das scheint zwar nicht zu schaden, ist aber dennoch überflüssig.

Sinnvoll wird sein, in der Klassendefinition jeweils die Zeile 
"self.grid(column = 0, row = 0)" zu löschen und grid() nach dem Einfügen 
einer Instanz auszuführen.

mfg

Michael S.

von Michael S. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo allerseits,

hier gibt's noch einmal eine Überarbeitung, nun ist alles "Klasse",
globale Variablen werden nicht mehr benötigt.

Vielleicht hilft der Programmcode dem einen oder anderen beim 
Einarbeiten in Tkinter.

mfg

Michael S.

von Jens D. (jedie) Flattr this


Lesenswert?

Das schaut doch ganz gut aus.

Würde vorschlagen, das mal ins Python-Forum zu stellen:

http://www.python-forum.de

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.