将用户输入文本存储为python中的变量

时间:2018-03-02 10:21:20

标签: python tkinter

嗨,我希望能够将用户输入文本存储为变量,以便在Python中定义之外使用。但似乎我只能在定义本身中访问该变量。关于如何让它在外面访问的任何想法?

import tkinter

#Quit Window when ESC Pressed
def quit(event=None):
    window.destroy()

def GetCountry():
    global InputCountry
    InputCountry = UserInput.get()


#Create Main Window
window=tkinter.Tk()
window.geometry("%dx%d+%d+%d" % (330, 80, 200, 150))
window.title("Select Country to Analyze")
window.bind('<Escape>', quit)

UserInput = tkinter.Entry(window)
UserInput.pack()

ButtonClick = tkinter.Button(window, text='Enter', command=GetCountry)
ButtonClick.pack(side='bottom')

print(InputCountry)
window.mainloop()

当我尝试调用GetCountry或InputCountry时,它表示未定义

2 个答案:

答案 0 :(得分:0)

未定义变量InputCountry,因为它仅存在于 def GetCountry():缩进块的范围内。至于GetCountry,它是一个函数,因此你需要编写它,它应该工作:

print(GetCountry())

希望它有所帮助!

答案 1 :(得分:0)

该print语句将打印 nothing ,即使它实际定义为打印输入任何内容之前在UserInput 中输入的内容。删除无用的行:

print(GetCountry)
print(InputCountry)

并添加:

print(InputCountry)

def GetCountry():的范围内。

此外,设置为命令回调的功能可以真正返回。一种解决方法是将想要返回的值附加到方法对象本身。替换:

return InputCountry

使用:

GetCountry.value = InputCountry

终于有了:

import tkinter

#Quit Window when ESC Pressed
def quit(event=None):
    window.destroy()

def GetCountry():
    InputCountry = UserInput.get()
    GetCountry.value = InputCountry
    print(InputCountry)


#Create Main Window
window=tkinter.Tk()
window.geometry("%dx%d+%d+%d" % (330, 80, 200, 150))
window.title("Select Country to Analyze")
window.bind('<Escape>', quit)

UserInput = tkinter.Entry(window)
UserInput.pack()

ButtonClick = tkinter.Button(window, text='Enter', command=GetCountry)
ButtonClick.pack(side='bottom')
window.mainloop()