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: 13236
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`.
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
Sirius3
User
Beiträge: 17822
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