Reputation: 13
I have 2 different pieces of code which are the same apart from one is not the first window. For some reason this is somehow stopping the entry fields to work.
Here's my Code:
Working:
from tkinter import *
from tkinter import ttk
def function():
var.set(text.get()+text2.get())
print(var.get())
main=Tk()
text=DoubleVar()
text2=DoubleVar()
var=StringVar()
ttk.Entry(main, textvariable=text).grid(column=0, row=0)
ttk.Entry(main, textvariable=text2).grid(column=1, row=0)
ttk.Label(main, textvariable=var).grid(column=2, row=0)
ttk.Button(main, text="Button", command=function).grid(column=0, row=1, columnspan=2)
Not Working:
from tkinter import *
from tkinter import ttk
def newwindow():
def function():
var.set(text.get()+text2.get())
print(var.get())
main=Tk()
text=DoubleVar()
text2=DoubleVar()
var=StringVar()
ttk.Entry(main, textvariable=text).grid(column=0, row=0)
ttk.Entry(main, textvariable=text2).grid(column=1, row=0)
ttk.Label(main, textvariable=var).grid(column=2, row=0)
ttk.Button(main, text="Button", command=function).grid(column=0, row=1, columnspan=2)
root=Tk()
ttk.Button(text="Button", command=newwindow).grid(column=0, row=0)
Upvotes: 1
Views: 930
Reputation: 76194
If you want to make additional top level windows beyond the first root window, you should make them Toplevel
objects instead of Tk
.
from tkinter import *
from tkinter import ttk
def newwindow():
def function():
var.set(text.get()+text2.get())
print(var.get())
main=Toplevel(root)
text=DoubleVar()
text2=DoubleVar()
var=StringVar()
ttk.Entry(main, textvariable=text).grid(column=0, row=0)
ttk.Entry(main, textvariable=text2).grid(column=1, row=0)
ttk.Label(main, textvariable=var).grid(column=2, row=0)
ttk.Button(main, text="Button", command=function).grid(column=0, row=1, columnspan=2)
root=Tk()
ttk.Button(text="Button", command=newwindow).grid(column=0, row=0)
root.mainloop()
Result:
Upvotes: 3