我有两个不同的代码,除了一个不是第一个窗口之外。出于某种原因,这会以某种方式阻止输入字段起作用。
这是我的代码:
工作:
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)
不工作:
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)
答案 0 :(得分:2)
如果您想在第一个根窗口之外创建其他顶级窗口,则应该使用Toplevel
个对象而不是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()
结果: