我试图从条目(a)中获取textvariable,然后将其放在新窗口中的标签中(w)。
from Tkinter import *
def abind(avar):
print avar
w=Toplevel()
at=Label(w, text=avar).pack()
w.mainloop()
app=Tk()
at=StringVar()
a=Entry(app,textvariable=at)
avar=at.get()
a.pack()
a.focus()
b=Button(app, command=abind(avar)).pack()
app.mainloop()
如果我在abind之后将avar从parantheses中取出,或者打开一个新的窗口immeadiatley并且如果我离开avar则不显示按钮小部件,它打印为空白。
答案 0 :(得分:1)
您的代码存在两个主要问题:
avar=at.get()
,avar
变量在该时间点具有文本变量的值,即它只是空字符串Button(app, command=abind(avar))
,您调用函数abind(avar)
并使用其结果作为命令,即None
此外,通过执行b=Button(...).pack()
,b
是pack()
的结果,即None
。这与你的问题无关,但它可能不是你想要的。试试这个:
b = Button(app, command=lambda: abind(at.get()))
b.pack()
这使用lambda
创建一个新的匿名函数,该函数将使用at
从at.get()
获取当前值,并使用该值调用abind
,设置文本Label
因此。{/ p>
如果您希望在Label
中输入其他文字时更新Entry
,请尝试以下操作:
def abind(avar):
...
at = Label(w, textvariable=avar) # use textvariable
at.pack # pack again
...
...
b = Button(app, command=lambda: abind(at)) # pass at itself
...