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

Gast #2922485
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.
Angehängte Dateien:
Gast #2928818
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.
Angehängte Dateien:
Gast #2930191
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.
Angehängte Dateien:
Gast #2934701
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren