Problem mit meinem tk.StringVar()

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
DMD-OL
User
Beiträge: 317
Registriert: Samstag 26. Dezember 2015, 16:21

hi,
ich verstehe nicht, weshalb im zweiten Fenster der tk.StringVar() nicht angezeigt wird.

Code: Alles auswählen

import Tkinter as tk

class Benutzer():

    def __init__(self):

        self.second = tk.Tk()
        self.second.title("Second window")
        self.second.geometry("%dx%d+%d+%d" % (200, 100, 600, 250))

        self.var = tk.StringVar()
        self.var.set("hallo")
        self.label = tk.Label(self.second, textvariable=self.var)
        self.label.place(relx=.2, rely=.2, anchor="w")

        self.start_button = tk.Button(self.second, text="CLOSE", width=15, command=self.close)
        self.start_button.place(relx=.2, rely=.5, anchor="w")

    def close(self):
        self.second.destroy()


class MyFirstGUI:

    def __init__(self):

        self.first = tk.Tk()
        self.first.title("First window")
        self.first.geometry("%dx%d+%d+%d" % (200, 100, 600, 250))
        self.label = tk.Label(self.first, text="This is my first GUI!")
        self.label.place(relx=.2, rely=.2, anchor="w")
        self.start_button = tk.Button(self.first, text="START", width=15, command=self.start)
        self.start_button.place(relx=.2, rely=.5, anchor="w")
        self.start_button = tk.Button(self.first, text="CLOSE", width=15, command=self.close)
        self.start_button.place(relx=.2, rely=.8, anchor="w")
        self.first.mainloop()

    def start(self):
        self.first.withdraw()
        self.first.update_idletasks()
        benutzer_thread = Benutzer()
        print ("Finished!")

    def close(self):
        self.first.destroy()


MyFirstGUI()
Benutzeravatar
__blackjack__
User
Beiträge: 13159
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Man darf keine zwei `Tk`-Objekte haben. Das ist *das* Hauptfenster, wo auch der Tcl/Tk-Interpreter dran hängt. Wenn man zusätzliche Fenster benötigt, nimmt man `Toplevel`.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
Sirius3
User
Beiträge: 17778
Registriert: Sonntag 21. Oktober 2012, 17:20

Außerdem sollte in __init__ nicht mainloop stehen. __init__ ist zum Initialisieren da. Und wenn die Initialisierung nie endet, ist das etwas komisch. place sollte man nicht verwenden. Besser mit grid oder pack arbeiten.
Antworten