这应该非常简单,但是我如何获得以下基本代码来输出输入的变量,以便我可以将其传递给程序的其余部分。
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模块返回吗?
答案 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()