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: 327
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: 14030
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`.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Sirius3
User
Beiträge: 18265
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