from tkinter import*
from tkinter import messagebox
import os
def accountinfo1():
a = nameentry.get()
info1 = open("Account #1.txt", "w")
info1.write(a)
info1.close()
messagebox.showinfo("Sign Up Process", "Registration Success")
def newaccount():
global newscreen
newscreen= Tk()
global nameentry
nameentry = StringVar()
labelname=Label(newscreen, text='Enter your Name:')
labelname.pack()
entername=Entry(newscreen, textvariable=nameentry)
entername.pack()
submitbutton = Button(newscreen, text="SUBMIT", command = accountinfo1)
submitbutton.pack()
newscreen.mainloop()
def main_screen():
global mscreen
mscreen=Tk()
addaccountbutton = Button(mscreen, text="Add Account", width = '20', height = '2', command=newaccount)
addaccountbutton.pack(padx=50,pady=50)
mscreen.mainloop()
main_screen()
Asked
Active
Viewed 39 times
0

TheLizzard
- 7,248
- 2
- 11
- 31

Moonlit
- 1
-
1Try changing ` nameentry = StringVar()` to ` nameentry = StringVar(master=newscreen)` or replace the second `Tk()` with `Toplevel()` – TheLizzard Jun 24 '21 at 12:41
-
1Welcome to StackOIverflow! Don't hesitate to look at the [How to ask page](https://stackoverflow.com/help/how-to-ask) of the help center. For instance, that would be better if you could edit your title to make it shorter and move the extra information to the body of the question. – j_4321 Jun 24 '21 at 12:44
-
1Also see [Why are multiple instances of Tk discouraged?](https://stackoverflow.com/questions/48045401/why-are-multiple-instances-of-tk-discouraged) – martineau Jun 24 '21 at 12:46
-
Thank you so much! TheLizzard. It works!❣️GodBless you – Moonlit Jun 24 '21 at 12:53
1 Answers
0
Your StringVar
is unnecessary. What you need to do is to make your entry global, so when you call accountinfo1()
, you can get the value of your entry straight away without having to use a StringVar
. Also use Toplevel()
instead of a second Tk()
.
from tkinter import messagebox
import os
def accountinfo1():
a = entername.get()
info1 = open("Account #1.txt", "w")
print(a)
info1.write(a)
info1.close()
messagebox.showinfo("Sign Up Process", "Registration Success")
def newaccount():
global entername
global newscreen
newscreen= Tk()
global nameentry
labelname=Label(newscreen, text='Enter your Name:')
labelname.pack()
entername=Entry(newscreen)
entername.pack()
submitbutton = Button(newscreen, text="SUBMIT", command = accountinfo1)
submitbutton.pack()
newscreen.mainloop()
def main_screen():
global mscreen
mscreen=Tk()
addaccountbutton = Button(mscreen, text="Add Account", width = '20', height = '2', command=newaccount)
addaccountbutton.pack(padx=50,pady=50)
mscreen.mainloop()
main_screen()
-
The is no point to the `newscreen.mainloop()` line. If you remove it, the code will run the same way. Also what if OP was tracing how the entry was changing using `
.trace`? – TheLizzard Jun 24 '21 at 16:28