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.
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.
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.