Freeze bei betätigen des "quit" Button

Fragen zu Tkinter.
Antworten
Benutzeravatar
kevind
User
Beiträge: 71
Registriert: Montag 22. Oktober 2012, 20:23
Wohnort: /dev/null

Servus zusammen,

ich weis jetzt nicht ob es ein Problem in der OO Programmierung von mir liegt oder ob ich sonst was falsch mache.
Als ich mir OOP angeschaut habe dacht ich mir das sich die GUI programmierung gut dafür eignet. Nun hänge ich hier fest, beim betätigen des "quit" Button hängt sich das Programm auf ("Freeze").

Über die Sinnhaftigkeit der Klassen bisher läst sich streiten aber irgendwo muss man ja anfangen ;)

Kann mir hier jemand weiterhelfen ?

Danke schonmal und Gruss, Kev

Code: Alles auswählen

from tkinter import *
root = Tk()

class App():
    def __init__(self,master):
        self.frame = Frame(master)
        self.frame.pack()

class buttons():
    def __init__(self,text,command):
        self.button = Button(root, text=text, command=command)
        self.button.pack()

class labels():
    def __init__(self, text):
        self.label = Label(root, text=text)
        self.label.pack()

app = App(root)

button1 = buttons("quit",app.frame.quit)
button2 = buttons("Dude!", "test")
label1 = labels("")


root.mainloop()

BlackJack

@kevind: Kann ich nicht nachvollziehen. Bei mir hängt sich nichts auf. Kann es sein, dass Du das aus irgendeiner IDE heraus startest? Passiert das auch wenn Du es eigenständig laufen lässt?
Benutzeravatar
kevind
User
Beiträge: 71
Registriert: Montag 22. Oktober 2012, 20:23
Wohnort: /dev/null

Merci fürs abchecken Blackjack,

ich starte den Code aus IDLE(GUI).
Witzig... wenn ich das .py File direkt ausführe dann funktioniert es.

Soll heissen eigentlich wäre mein Code in Ordnung ?

Greetz
BlackJack

@kevind: Jain. Die Aufteilung in Klassen sind nicht sinnvoll.
Benutzeravatar
kevind
User
Beiträge: 71
Registriert: Montag 22. Oktober 2012, 20:23
Wohnort: /dev/null

Inwiefern ist es nicht sinnvoll ?

Weil normalerweise noch viel mehr Informationen zu den Buttons etc dazu kommen ?
BlackJack

@kevind: Man fasst thematisch zusammengehörige Daten und Funktionen in einer Klasse zusammen und nicht Objekte nach ihrem Typ. Das ist als wenn man ein Bücherregal nach Farbe oder Grösse der Bücher sortiert statt nach Themengebieten die in den Büchern behandelt werden.

Wo hättest Du denn jetzt den Sinn in Deinen Klassen gesehen?

Insbesondere bei `buttons` fällt doch bei dem Programm schon auf das der Name falsch ist. Das sind nicht mehrere sondern *einer*. Im Grunde „verpackst” Du `Button` und `Label` nur noch einmal in einer völlig sinnfreien extra Klasse. Was ist da der Mehrwert gegenüber `Button` und `Label` direkt zu verwenden?

Zusätzlich folgen die Namen `buttons` und `labels` nicht der üblichen Konvention bei Klassennamen.

Klassen sind dazu da thematisch zusammengehörige Daten und Funktionen die auf ihnen operieren zu Objekten zusammen zu fassen.
Benutzeravatar
kevind
User
Beiträge: 71
Registriert: Montag 22. Oktober 2012, 20:23
Wohnort: /dev/null

Ich wollte eigentlich nur den Umgang mit Klassen üben, das es nicht sonderlich Sinnvoll ist war mir eigentlich bewusst. Jedoch wollte ich nur fragen ob du noch eine andere Sinnlosigkeit siehst als ich selber ;)

Dank dir Blackjack
Antworten