de:beispiele
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
de:beispiele [2022/02/01 10:09] – [Verkettete Liste] roehner | de: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 | + | Die EAN-Prüfung ist ein Beispiel für eine einfache GUI-Anwendung. Sie hat ein Entry-Widget |
{{de: | {{de: | ||
Zeile 11: | Zeile 12: | ||
def bPruefen_Command(self): | def bPruefen_Command(self): | ||
# Eingabe | # Eingabe | ||
- | EAN = self.EANTV.get() | + | EAN = self.eEANCV.get() |
# | # | ||
if not EAN.isdigit(): | if not EAN.isdigit(): | ||
- | self.ausgeben(' | + | self.ausgeben(' |
if len(EAN) == 13: | if len(EAN) == 13: | ||
self.ausgeben(' | self.ausgeben(' | ||
Zeile 42: | Zeile 43: | ||
</ | </ | ||
- | Gemäß dem EVA-Prinzip wird zunächst die Eingabe aus der Entry-Komponente | + | Gemäß dem EVA-Prinzip wird zunächst die Eingabe aus dem Entry-Widget |
<code python> | <code python> | ||
- | EAN = self.EANTV.get() | + | EAN = self.eEANCV.get() |
</ | </ | ||
- | wird also die in die Entry-Komponente | + | wird also die in das Entry-Widget |
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 | + | Die Ausgaben erfolgen in das Text-Widget |
<code python> | <code python> | ||
Zeile 58: | Zeile 59: | ||
</ | </ | ||
- | Damit wird in die Text-Komponente | + | Damit wird in das Text-Widget |
**Download: | **Download: | ||
*[[https:// | *[[https:// | ||
+ | |||
+ | === 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() | ||
+ | </ | ||
+ | |||
+ | Die Ausgabe ist in Qt einfacher als in Tkinter/ | ||
+ | |||
+ | <code python> | ||
+ | def output(self, | ||
+ | self.Output.appendPlainText(line) | ||
+ | </ | ||
+ | | ||
+ | **Download**: | ||
+ | *[[https:// | ||
==== Auto ==== | ==== Auto ==== | ||
Zeile 84: | Zeile 102: | ||
</ | </ | ||
- | Beim Tanken wird die in der Entry-Komponente | + | === Tkinter/TTK === |
+ | |||
+ | Beim Tanken wird die in das Entry-Widget | ||
<code python> | <code python> | ||
def bTanken_Command(self): | def bTanken_Command(self): | ||
# Eingabe über die GUI | # Eingabe über die GUI | ||
- | Menge = float(self.eTankenTV.get()) | + | Menge = float(self.eMengeCV.get()) |
# Verarbeitung | # Verarbeitung | ||
self.auto1.tanken(Menge) | self.auto1.tanken(Menge) | ||
Zeile 96: | Zeile 116: | ||
</ | </ | ||
- | 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 |
- | Abschließend erfolgt die Ausgabe des Ergbnisses | + | Abschließend erfolgt die Ausgabe des Ergebnisses |
<code python> | <code python> | ||
def anzeigen(self): | def anzeigen(self): | ||
- | self.eTankinhaltTV.set(self.auto1.get_Tankinhalt()) | + | self.eKennzeichenCV.set(self.auto1.get_Kennzeichen()) |
- | self.eKilometerstandTV.set(self.auto1.get_Kilometerstand()) | + | self.eTankinhaltCV.set(self.auto1.get_Tankinhalt()) |
+ | self.eKilometerstandCV.set(self.auto1.get_Kilometerstand()) | ||
self.lAuto.place(x = self.auto1.get_Kilometerstand(), | self.lAuto.place(x = self.auto1.get_Kilometerstand(), | ||
</ | </ | ||
- | Der Label-Komponente | + | Dem Label-Widget |
**Download** | **Download** | ||
*[[https:// | *[[https:// | ||
+ | === 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, | ||
+ | # Eingabe über die GUI | ||
+ | Menge = float(self.leMenge.text()) | ||
+ | # Verarbeitung | ||
+ | self.auto1.tanken(Menge) | ||
+ | # Ausgabe | ||
+ | self.anzeigen() | ||
+ | </ | ||
+ | |||
+ | Dann wird gemäß dem EVA-Prinzip die eingegebene Menge in der Methode // | ||
+ | |||
+ | Abschließend erfolgt die Ausgabe des Ergebnisses in einer eigenen Methode // | ||
+ | |||
+ | <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(), | ||
+ | </ | ||
+ | |||
+ | 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:// | ||
==== 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 | + | Die Programmierung dynamische Datenstrukturen stellt eine erhebliche Herausforderung dar, denn man muss das Konzept der Verkettung mittels Verweisen verstehen und komplexe Operationen mit Verweisen |
In diesem Beispiel betrachten wir eine einfach verkettete lineare Liste. Die Liste selbst wird als Klasse // | In diesem Beispiel betrachten wir eine einfach verkettete lineare Liste. Die Liste selbst wird als Klasse // | ||
Zeile 130: | 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 | + | - Es soll am Ende eingefügt |
- Es soll zwischen zwei Knoten eingefügt werden. | - Es soll zwischen zwei Knoten eingefügt werden. | ||
Zeile 197: | Zeile 248: | ||
{{de: | {{de: | ||
+ | |||
+ | **Wichtiger Hinweis** | ||
+ | |||
+ | Im UML-Fenster werden zur Identifizierung der Objekte deren Adressen benutzt. Im Beispiel also die Adresse 0x03350E98 für das Objekt knoten1. | ||
+ | |||
+ | <code python> | ||
+ | >>> | ||
+ | >>> | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | Implementieren Sie daher keine %%__repr__%%-Funktion für ihre Klassen, weil diese Adressen dann nicht mehr zur Verfügung stehen. | ||
**Download**: | **Download**: |
de/beispiele.1643706543.txt.gz · Zuletzt geändert: 2022/02/01 10:09 von roehner