Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:beispiele

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:beispiele [2022/03/04 16:45] – [EAN-Prüfung] roehnerde:beispiele [2022/08/25 21:33] (aktuell) – [EAN-Prüfung] roehner
Zeile 1: Zeile 1:
 ===== Beispiele ===== ===== Beispiele =====
 ==== EAN-Prüfung ==== ==== EAN-Prüfung ====
 +=== Tkinter/TTK ===
  
 Die EAN-Prüfung ist ein Beispiel für eine einfache GUI-Anwendung. Sie hat ein Entry-Widget für die Eingabe einer EAN und ein Text-Widget für die mehrzeilige Ausgabe von Ergebnissen. Die EAN-Prüfung ist ein Beispiel für eine einfache GUI-Anwendung. Sie hat ein Entry-Widget für die Eingabe einer EAN und ein Text-Widget für die mehrzeilige Ausgabe von Ergebnissen.
Zeile 14: Zeile 15:
     #Verarbeitung     #Verarbeitung
     if not EAN.isdigit():     if not EAN.isdigit():
-        self.ausgeben('Eine EAN darf keine Zeichen aus Ziffern enthalten!')+        self.ausgeben('Eine EAN darf keine anderen Zeichen als Ziffern enthalten!')
     if len(EAN) == 13:     if len(EAN) == 13:
         self.ausgeben('Länge der EAN: 13')         self.ausgeben('Länge der EAN: 13')
Zeile 42: Zeile 43:
 </code> </code>
  
-Gemäß dem EVA-Prinzip wird zunächst die Eingabe aus dem Entry-Widget eingelesen. Zum Einlesen benutzt man die der Entry-Widget zugeordnete Kontrollvariable eEANCV. Ihr Wert kann zur Eingabe mit eENACV.get() gelesen und mit eEANCV.set(Wert) ausgegeben werden. Mit +Gemäß dem EVA-Prinzip wird zunächst die Eingabe aus dem Entry-Widget eingelesen. Zum Einlesen benutzt man die dem Entry-Widget zugeordnete Kontrollvariable eEANCV. Ihr Wert kann zur Eingabe mit eENACV.get() gelesen und mit eEANCV.set(Wert) ausgegeben werden. Mit 
  
 <code python> <code python>
Zeile 62: Zeile 63:
 **Download:** **Download:**
   *[[https://www.guipy.de/examples/de/ean.zip |ean.zip]]    *[[https://www.guipy.de/examples/de/ean.zip |ean.zip]] 
 +
 +=== Qt Variante der EAN-Prüfung ===
 +In Qt haben wir ein LineEdit-Widget für die Eingabe und ein PlainTextWidget für die Ausgabe. Um die EAN zu lesen, verwenden wir die Methode //text()// des LineEdit-Widgets.
 +
 +<code python>
 +    EAN = self.leEAN.text()
 +</code>
 +
 +Die Ausgabe ist in Qt einfacher als in Tkinter/TTK:
 +
 +<code python>
 +    def output(self, line):
 +        self.Output.appendPlainText(line)
 +</code>
 +  
 +**Download**:
 +  *[[https://www.guipy.de/examples/de/qtean.zip|qtean.zip]] 
  
 ==== Auto ==== ==== Auto ====
Zeile 84: Zeile 102:
 </code> </code>
  
-Beim Tanken wird die in der Entry-Komponente eingegebene Menge über die get()-Methode der zur Komponente gehörenden Textvariablen //eMengeTV// eingelesen und mittels //float// in den benötigten Datentyp konvertiert.+=== Tkinter/TTK === 
 + 
 +Beim Tanken wird die in das Entry-Widget eingegebene Menge über die get()-Methode der zum Widget gehörenden Kontrollvariablen //eMengeCV// eingelesen und mittels //float// in den benötigten Datentyp konvertiert.
  
 <code python> <code python>
     def bTanken_Command(self):     def bTanken_Command(self):
         # Eingabe über die GUI         # Eingabe über die GUI
-        Menge = float(self.eMengeTV.get())+        Menge = float(self.eMengeCV.get())
         # Verarbeitung         # Verarbeitung
         self.auto1.tanken(Menge)         self.auto1.tanken(Menge)
Zeile 96: Zeile 116:
 </code> </code>
  
-Dann wird gemäß dem EVA-Prinzip die eingegebene Menge in der Methode tanken() verarbeitet. +Dann wird gemäß dem EVA-Prinzip die eingegebene Menge in der Methode //tanken()// verarbeitet. 
  
-Abschließend erfolgt die Ausgabe des Ergbnisses in einer eigenen Methode anzeigen(). Die Werte für Kennzeichen, Tankinhalt und Kilometerstand werden über die get()-Methoden der Klasse Auto abgerufen und an die set()-Methoden der Textvariablen eKennzeichenTVeTankinhaltTV und eKilometerstandTV übergeben:+Abschließend erfolgt die Ausgabe des Ergebnisses in einer eigenen Methode //anzeigen()//. Die Werte für Kennzeichen, Tankinhalt und Kilometerstand werden über die get()-Methoden der Klasse Auto abgerufen und an die set()-Methoden der Kontrollvariablen eKennzeichenCVeTankinhaltCV und eKilometerstandCV übergeben:
  
 <code python> <code python>
     def anzeigen(self):     def anzeigen(self):
-        self.eKennzeichenTV.set(self.auto1.get_Kennzeichen()) +        self.eKennzeichenCV.set(self.auto1.get_Kennzeichen()) 
-        self.eTankinhaltTV.set(self.auto1.get_Tankinhalt()) +        self.eTankinhaltCV.set(self.auto1.get_Tankinhalt()) 
-        self.eKilometerstandTV.set(self.auto1.get_Kilometerstand())+        self.eKilometerstandCV.set(self.auto1.get_Kilometerstand())
         self.lAuto.place(x = self.auto1.get_Kilometerstand(), y = 160)         self.lAuto.place(x = self.auto1.get_Kilometerstand(), y = 160)
 </code> </code>
  
-Der Label-Komponente //lAuto// wurde im Objektinspektor über das Attribut //Image// ein Auto-Bild zugewiesen. Mit der place()-Methode wird die x-Position des Autos auf den Kilometerstand gesetzt.+Dem Label-Widget //lAuto// wurde im Objektinspektor über das Attribut //Image// ein Auto-Bild zugewiesen. Mit der place()-Methode wird die x-Position des Autos auf den Kilometerstand gesetzt.
  
 **Download** **Download**
   *[[https://www.guipy.de/examples/de/auto.zip |auto.zip]]    *[[https://www.guipy.de/examples/de/auto.zip |auto.zip]] 
  
 +=== Qt ===
 +
 +Beim Tanken wird die eingegebene Menge über die text()-Methode des LineEdit-Widgets eingelesen und mittels //float// in den benötigten Datentyp konvertiert.
 +
 +<code python>
 +    def bTanken_clicked(self, checked):
 +        # Eingabe über die GUI
 +        Menge = float(self.leMenge.text())
 +        # Verarbeitung
 +        self.auto1.tanken(Menge)
 +        # Ausgabe
 +        self.anzeigen()
 +</code>
 +
 +Dann wird gemäß dem EVA-Prinzip die eingegebene Menge in der Methode //tanken()// verarbeitet. 
 +
 +Abschließend erfolgt die Ausgabe des Ergebnisses in einer eigenen Methode //anzeigen()//. Die Werte für Kennzeichen, Tankinhalt und Kilometerstand werden über die get()-Methoden der Klasse Auto abgerufen und an die setText()-Methoden der der LineEdit-Widgets für Kennzeichen, Tankinhalt und Kilometerstand übergeben:
 +
 +<code python>
 +        self.leKennzeichen.setText(self.auto1.get_Kennzeichen())
 +        self.leTankinhalt.setText(str(self.auto1.get_Tankinhalt()))
 +        self.leKilometerstand.setText(str(self.auto1.get_Kilometerstand()))
 +        self.lAuto.move(self.auto1.get_Kilometerstand(), 160)
 +</code>
 +
 +Dem Label-Widget //lAuto// wurde im Objektinspektor über das Attribut //Pixmap// ein Auto-Bild zugewiesen. Mit der move()-Methode wird die x-Position des Autos auf den Kilometerstand gesetzt.
 +
 +
 +**Download**
 +  *[[https://www.guipy.de/examples/de/qtauto.zip |qtauto.zip]] 
  
 ==== Verkettete Liste ==== ==== Verkettete Liste ====
-Die Programmierung dynamische Datenstrukturen stellt eine erhebliche Herausforderung dar, denn man muss das Konzept der Verkettung mittels Verweisen verstehen und komplexe Operationen mit Verweisen druchführen. Neu dabei sind Variablen die Werte haben, welche Verweise auf Objekte bzw. Adressen sind. +Die Programmierung dynamische Datenstrukturen stellt eine erhebliche Herausforderung dar, denn man muss das Konzept der Verkettung mittels Verweisen verstehen und komplexe Operationen mit Verweisen durchführen. Neu dabei sind Variablen die Werte haben, welche Verweise auf Objekte bzw. Adressen sind. 
  
 In diesem Beispiel betrachten wir eine einfach verkettete lineare Liste. Die Liste selbst wird als Klasse //VerketteteListe// modelliert mit Knoten als Listenelementen. Als Attribut hat sie einen Verweis auf den //Anfang// der Liste. In diesem Beispiel betrachten wir eine einfach verkettete lineare Liste. Die Liste selbst wird als Klasse //VerketteteListe// modelliert mit Knoten als Listenelementen. Als Attribut hat sie einen Verweis auf den //Anfang// der Liste.
Zeile 131: Zeile 181:
   - Die Liste ist leer.   - Die Liste ist leer.
   - Es soll am Anfang eingefügt werden.   - Es soll am Anfang eingefügt werden.
-  - Es soll am Ende eingefügt werdenn.+  - Es soll am Ende eingefügt werden.
   - Es soll zwischen zwei Knoten eingefügt werden.   - Es soll zwischen zwei Knoten eingefügt werden.
  
de/beispiele.1646408759.txt.gz · Zuletzt geändert: 2022/03/04 16:45 von roehner