Neue Seite bei GUI

Fragen zu Tkinter.
Antworten
solaris1997
User
Beiträge: 9
Registriert: Sonntag 12. Februar 2017, 20:25

Hallo,

für ein aktuelles Projekt wage ich mich derzeit das erste Mal an eine GUI. Seit ein paar Tagen stehe ich jedoch vor einem Problem. Wie mache ich sozusagen eine neue Seite, sprich wenn ich auf einen Button klicke (z.B. Einstellungen), dass ich dann auf eine Einstellungsseite komme?
Bis jetzt habe ich lediglich herausgefunden, dass ich das mit verschiedenen Klassen anstellen muss, jedoch habe ich absolut keinen Durchblick, obwohl ich mittlerweile das Internet gefühlt 5-mal umgewälzt habe. Was genau eigentlich Klassen sind, ist mir sowieso noch rätselhaft, und wenn dann auch andere Dinge wie Instanzobjekte oder Methodenobjekte dazukommen, weiß ich gar nicht mehr wo oben und unten ist.

Vielen Dank schon mal
MfG Jakob
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Schau dir mal diese Einführung in Klassen etc an
https://www.python-kurs.eu/klassen.php
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
solaris1997
User
Beiträge: 9
Registriert: Sonntag 12. Februar 2017, 20:25

Hallo,
vielen Dank für die schnelle Antwort. Was eine Klasse ist, ist mir jetzt bisschen klarer, aber zum Beispiel hier:

Code: Alles auswählen

class Konto(object): 
    def ueberweisen(self, ziel, betrag): 
        pass 
    def einzahlen(self, betrag): 
        pass 
    def auszahlen(self, betrag): 
        pass 
    def kontostand(self): 
        pass
Für was brauche ich das "(object)" nach "class konto"?
Was sagt mir das "def", also was definiere ich da?
Was macht das "self"?

Oder hier:

Code: Alles auswählen

def __init__(self, inhaber, kontonummer, 			
					 kontostand, kontokorrent=0):
Was bewirkt das "__init__"?

Da kann ich mir die Definitionen 100 mal durchlesen und ich verstehe immer noch nur Bahnhof :|

Angenommen in einer class habe ich einen Button und ich möchte bei der Betätigung auf eine andere class verweisen, wie mache ich das konkret?

MfG Jakob
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Hallo Jakob,

bzgl. deiner Fragen empfehle ich dir sehr diesen Link hier:
http://py-tutorial-de.readthedocs.io/de ... asses.html

"object" ist eine Klasse in Python, von der ab Python 3.x jede Klasse automatisch "erbt".
In Python 2.x war dem nicht so, dort muss man das "(object)" angeben wenn man von dieser Klasse erben will.
In dem Beispiel ginge also auch class Konto: wenn du Python 3.x benutzt.

def wird benutzt um Funktionen zu definieren, Funktionen einer Klasse nennt man Methoden.

Bzgl. self
Auszug aus obigem Link:
"Das erste Argument einer Methode wird self genannt. Dies ist nichts anderes als eine Konvention: Der Name an sich hat absolut keine spezielle Bedeutung für Python.
Aber beachte: Hälst du dich nicht an die Konvention, kann dein Code schwerer lesbar für andere Python-Programmierer sein."

Bzgl. __init__ auch wieder siehe Link.
Die Instanziierungsoperation (“aufrufen” eines Klassenobjekts) erzeugt ein leeres Objekt. Viele Klassen haben es gerne Instanzobjekte, die auf einen spezifischen Anfangszustand angepasst wurden, zu erstellen. Deshalb kann eine Klasse eine spezielle Methode namens __init__(), wie folgt definieren:

def __init__(self):
self.data = []

Definiert eine Klasse eine __init__()-Methode, ruft die Klasseninstanziierung automatisch __init__() für die neu erstellte Klasseninstanz auf.
Natürlich kann die __init__()-Methode Argumente haben, um eine größere Flexibilität zu erreichen.
In diesem Fall werden die, dem Klasseninstanziierungsoperator übergebenen Argumente an __init__() weitergereicht.

def __init__(self, data):
self.data = data
solaris1997 hat geschrieben: Sonntag 5. August 2018, 18:37 Angenommen in einer class habe ich einen Button und ich möchte bei der Betätigung auf eine andere class verweisen, wie mache ich das konkret?
Ich bin ehrlich, solange du die oben angefragten Themen nicht zu 100% verstehst, ist es schwierig dir das zu erklären,
weil das Verständnis von Klassen und OOP dazu notwendig ist.

Grüße, Thomas
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Antworten