如何将TKinter输入存储到下一个函数的字符串变量中?
我刚接触TKinter,还是不太明白怎么把文本框里的输入保存起来。我几乎看了所有的教程,也找了很多类似的问题,但人家的方法都没能解决我的困扰 :/。
def cityInfoWindow(self, flightMap):
infoWindow = Tk()
infoWindow.geometry("500x500+100+100")
infoWindow.title("CSAir-City Information")
global input
input = StringVar()
cityEntry = Entry(infoWindow,textvariable = input).pack()
okButton = Button(infoWindow, text = 'Submit', command = lambda:self.getCityInfo(infoWindow, input)).pack()
def getCityInfo(self, infoWindow, input):
content = input.get()
print content
return
我试着把我的输入传递到我的函数里,但这样也不行。
1 个回答
4
有一个内置的函数叫做 input,尽量不要把它当作变量名来用。除此之外,这个函数使用起来很简单。
你可以为 Entry
组件选择一个你喜欢的 变量类(这里用的是 StringVar()
),然后随时用 get()
方法获取这个变量的内容。
另外,Entry
组件也有一个 get() 方法。通过这个方法,你可以直接获取 Entry
的内容,而不需要使用 StringVar
。
下面是一个简单的例子,展示了如何做到这一点。你应该自己把它实现到你的代码里。
import tkinter as tk
def get_class(): #no need to pass arguments to functions in both cases
print (var.get())
def get_entry():
print (ent.get())
root = tk.Tk()
var = tk.StringVar()
ent = tk.Entry(root,textvariable = var)
btn1 = tk.Button(root, text="Variable Class", command=get_class)
btn2 = tk.Button(root, text="Get Method", command=get_entry)
ent.pack()
btn1.pack()
btn2.pack()
root.mainloop()
编辑:顺便说一下,下次发问题的时候,请考虑附上完整的错误追踪信息或者说明出错的地方(你期待的是什么,实际得到了什么等等),而不是仅仅说“它不工作”。这样的话,你可能会得到更准确的帮助和答案。