Tkinter文本框返回变量

时间:2012-02-03 07:13:28

标签: python string tkinter

这应该非常简单,但是我如何获得以下基本代码来输出输入的变量,以便我可以将其传递给程序的其余部分。

from Tkinter import *
root = Tk()

InputStrings = StringVar()
Entry(root, textvariable=InputStrings).pack()

def GetString():
    print InputStrings.get()
    Button(root, text='Print', command=OutputText).pack()
    root.mainloop()

def OutputText():
    OutString=InputStrings.get()
    print OutString
    root.withdraw()
    root.quit()

GetString()
print OutString

当我向def添加OutString时,它会产生其他错误。我真的需要OutputText模块 - 不能只是从GetString模块返回吗?

1 个答案:

答案 0 :(得分:2)

这是范围问题!请注意,当您分配给OutString时,您将在函数中执行此操作。好吧,Python认为你想要在该函数中使用一个新变量。但是之后,在模块范围内,在您致电GetString()结束后,您尝试打印OutString。惊喜!它不存在。

那是因为您忘了将其添加到全局范围。要确保将分配给的变量分配给全局范围而不是本地范围,请使用global statement。像这样:

def OutputText():
    # Declare that OutString will be global
    global OutString
    OutString = InputStrings.get()
    ...

GetString()
print OutString
# It prints! Twice, actually, because you also printed it from OutputText()