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/01 17:14] – [Auto] 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 eine Entry-Komponente für die Eingabe einer EAN und eine Text-Komponente 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.
  
 {{de:eanpruefung.png}} {{de:eanpruefung.png}}
Zeile 11: Zeile 12:
 def bPruefen_Command(self): def bPruefen_Command(self):
     # Eingabe     # Eingabe
-    EAN = self.EANTV.get()+    EAN = self.eEANCV.get()
     #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 der Entry-Komponente eingelesen. Zum Einlesen benutzt man die der Entry-Komponente zugeordnete Textvariable EANTV. Ihr Wert kann zur Eingabe mit ENATV.get() gelesen und mit EAN.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>
-    EAN = self.EANTV.get()+    EAN = self.eEANCV.get()
 </code> </code>
-wird also die in die Entry-Komponente eingegebene EAN in die lokale **str(ing)** Variable EAN eingelesen und kann dann verarbeitet werden. +wird also die in das Entry-Widget eingegebene EAN in die lokale **str(ing)** Variable EAN eingelesen und kann dann verarbeitet werden. 
  
 Im Verarbeitungsteil wird geprüft, ob 13 Ziffern eingegeben wurden und dann die Prüfziffernberechnung durchgeführt.  Im Verarbeitungsteil wird geprüft, ob 13 Ziffern eingegeben wurden und dann die Prüfziffernberechnung durchgeführt. 
  
-Die Ausgaben erfolgen in die Text-Komponente mit der Bezeichnung //Ausgabe//Sie verfügt über sehr leistungsfähige Methoden, weswegen schon die einfache Ausgabe einer Zeile nicht ganz einfach ist. Für die Ausgabe wird daher eine eigene Methode //ausgeben()// benutzt, um die Programmierung zu vereinfachen.+Die Ausgaben erfolgen in das Text-Widget mit der Bezeichnung //Ausgabe//Es verfügt über sehr leistungsfähige Methoden, weswegen schon die Ausgabe einer einzelnen Zeile nicht ganz einfach ist. Für die Ausgabe wird daher eine eigene Methode //ausgeben()// benutzt, um die Programmierung zu vereinfachen.
  
 <code python> <code python>
Zeile 58: Zeile 59:
 </code> </code>
  
-Damit wird in die Text-Komponente //Ausgabe// am Ende eine Zeile eingefügt und diese mit dem Steuerzeichen '\n' (NewLine) beendet. Besteht eine Ausgabezeile aus mehreren Teilstrings, so müssen diese mit "+" zusammengesetzt werden. Zahlen müssen zuvor mittels **str**() in einen String umgewandelt werden.+Damit wird in das Text-Widget //Ausgabe// am Ende eine Zeile eingefügt und diese mit dem Steuerzeichen '\n' (NewLine) beendet. Besteht eine Ausgabezeile aus mehreren Teilstrings, so müssen diese mit "+" zusammengesetzt werden. Zahlen müssen zuvor mittels **str**() in einen String umgewandelt werden.
  
 **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 //eTankenTV// 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 Tankinhalt und Kilometerstand werden über die get()-Methoden get_Tankinhalt() und get_Kilometerstand() der Klasse Auto abgerufen und an die set()-Methoden der Textvariablen eTankinhaltTV 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 eKennzeichenCV, eTankinhaltCV 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.1646151267.txt.gz · Zuletzt geändert: 2022/03/01 17:14 von roehner