Python Tkinter - 当我尝试在新窗口中使用Entry表单时,它们不起作用

时间:2014-09-12 16:48:06

标签: python tkinter ttk

我有两个不同的代码,除了一个不是第一个窗口之外。出于某种原因,这会以某种方式阻止输入字段起作用。

这是我的代码:

工作:

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)

1 个答案:

答案 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()

结果:

enter image description here