如何将TKinter输入存储到下一个函数的字符串变量中?

0 投票
1 回答
8588 浏览
提问于 2025-04-28 01:04

我刚接触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()

编辑:顺便说一下,下次发问题的时候,请考虑附上完整的错误追踪信息或者说明出错的地方(你期待的是什么,实际得到了什么等等),而不是仅仅说“它不工作”。这样的话,你可能会得到更准确的帮助和答案。

撰写回答