rogeravs1997
rogeravs1997

Reputation: 13

VarString.get() return an empty string

I am a beginner and I am making a login system (just for practicing). I'm using tkinter to develop a simple UI. The thing is that when I call a second root (sign_in root) with a button from another root (main_screen), and I try to get some values typed in entry with StringVars assigned to them, they return just an empty string ""

    def main_screen():

        root=Tk()
        user=StringVar()
        pas=StringVar()

        btn2=Button(root,text='Sign-In',command=sign_in_screen)
        btn2.place(x=125,y=160)

        root.mainloop()

   def sign_in_screen():
        root1=Tk()
        newuser=StringVar()
        newpas=StringVar() 

        ent3=Entry(root1,width=28,textvariable=newuser) 
        ent3.place(x=100,y=50)

        ent4=Entry(root1,width=28,textvariable=newpas,show="*")
        ent4.place(x=100,y=100)

        btn3=Button(root1,text='Sign-In',command=lambda:register(newuser.get(), newpas.get()))
        btn3.place(x=50,y=160)

        root1.mainloop()

    main_screen()

Upvotes: 1

Views: 89

Answers (1)

RedKnite
RedKnite

Reputation: 1545

Having multiple instances of Tk become hideously complicated because each one creates a separate tcl interpreter. This causes weird effects like what you see here. It's you almost always want to use the Toplevel widget.

Upvotes: 1

Related Questions