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: 315
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: 13112
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`.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Sirius3
User
Beiträge: 17754
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