Python - etwas Anfängerhilfe

Mo3Jo3

Experte
Thread Starter
Mitglied seit
01.08.2017
Beiträge
2.902
Ort
ganz im Westen
Hallo Leute,
habe vor kurzem angefangen mich mit Python zu beschöftigen und natürlich ein paar Probleme und Fragen ^^
Man findet zwar viele Erklärungen zu Funktionen und Synthax im Netz, leider aber nicht, wie man generell ein Programm "aufbaut". Ab wann ist es zum Beispiel sinnvoll Klassen oder Funktionen in eine separate Datei auszulagern aus dem Hauptprogramm. Wie sieht die Struktur im Hauptprogramm aus? Erst der "Ablauf" und die Funktionen einfach hinten anhängen?

Und noch ein kleines praktisches Problem, was funktioniert hier nicht?
Code:
from tkinter import *


startfenster = Tk()
startfenster.geometry("300x100")
startfenster.title("Starttest")

startlabel = Label(startfenster, text="test")
startlabel.pack(expand=1)

startrahmen = Frame(startfenster, relief="ridge", borderwidth=5)
startrahmen.pack(fill="both", expand=1)

startbutton = Start(startrahmen, text="Rein jetzt!", command=startfenster.destroy)
startbutton["command"]=startbutton.zumHF
startbutton.pack(side="bottom")

startfenster.mainloop()

class Start(Button):

    def zumHF(self):

        hauptfenster = tk()
        hauptfenster.geometry("1600x1200")
        hauptfenster.title("Moe's ultimativer FluxOrganisator")
        hfrahmen = Frame(hauptfenster, relief="ridge", borderwidth=5)
        hfrahmen.pack(fill="both", expand=1)

        hauptfenster.mainloop()

In der Zeile "startbutton = Start(startrahmen, text="Rein jetzt!", command=startfenster.destroy)" sagt mir der Debugger: name 'Start' is not defined. Ich verstehe das Problem nicht.

Edit: habe das Problem gefunden und damit auch eine meiner Fragen oben geklärt :wall:
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Du solltest die Klasse wohl im Code zuerst definieren. Warum man die Logik zum Erzeugen eines neuen Fenster in eine Button-Klasse packt, verstehe ich nicht, imho macht man sowas nicht. In deinem Fall könntest du dir die Klasse eigentlich komplett sparen und die Funktion direkt zuweisen.

Einige andere Dinge darfst du selbst herausfinden ;).
 
Danke für die Hilfe.
Ich habe gelesen(kleines Python starter Buch), dass man einem Button eine eigene Methode(ich glaube gemeint ist hier die Funktion def) zuweisen muss, um die Anweisungen des Buttons festzulegen. Warum der Autor die Funktion an eine Klasse übergeben hat, weis ich nicht. Ich als Anfänger habe das desshalb erstmal so hingenommen.
Das Thema Objektorientierte Programmierung verwirrt mich imo auch noch etwas....
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh