gpt4 book ai didi

python - 无法将变量传递给 python 中的 Tkinter

转载 作者:太空宇宙 更新时间:2023-11-04 05:56:25 26 4
gpt4 key购买 nike

我正在尝试从条目 (a) 中获取文本变量,然后将其放入新窗口的标签中 (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,它要么打印空白,要么立即打开一个新窗口并且不显示按钮小部件,如果我离开 avar。

最佳答案

您的代码有两个主要问题:

  • 使用avar=at.get()avar 变量在那个时间点 具有文本变量的值,即它只是一个空字符串
  • 使用 Button(app, command=abind(avar)),您正在调用函数 abind(avar) 并使用它的 < em>result 作为命令,即 None

此外,通过执行 b=Button(...).pack()bpack() 的结果,即 。这与您的问题无关,但也可能不是您想要的。试试这个:

b = Button(app, command=lambda: abind(at.get()))
b.pack()

这使用 lambda 创建一个新的匿名函数,它将使用 at.get()at 获取当前值并调用 abind 与该值,相应地设置 Label 的文本。

如果您希望在 Entry 中键入其他文本时更新 Label,请尝试以下操作:

def abind(avar):
...
at = Label(w, textvariable=avar) # use textvariable
at.pack # pack again
...
...
b = Button(app, command=lambda: abind(at)) # pass at itself
...

关于python - 无法将变量传递给 python 中的 Tkinter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27526750/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com