如何将tkinter中输入框中输入的文本从一个函数传递到另一个函数?

时间:2016-10-12 02:00:45

标签: python python-2.7 tkinter

我想把entery盒子文本从一个函数传递给另一个函数,但它给了我一个错误,即变量本身没有定义。这是我的代码。

from Tkinter import *
def mhello():
    mtext=ment.get()
    print mtext
def main():
    root=Tk()
    ment=StringVar()
    root.title('Test')
    mlabel=Label(root,text='Enter Text').pack()
    mentry=Entry(root,textvariable=ment).pack() 
    mbutton=Button(root,text='Click Me',command=mhello).pack()
if __name__ == '__main__':
    main()

它给出错误:

Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1489, in __call__
return self.func(*args)
File "pygui.py", line 3, in mhello
mtext=ment.get() 
NameError: global name 'ment' is not defined

1 个答案:

答案 0 :(得分:0)

首先,您有一个可变范围问题,函数中定义的变量对这些函数是本地的,因此ment中定义mainmhello中未定义mhello。将变量传递给ment或将def mhello(var): mtext=var.get() print(mtext) 设为全局变量。所以我们可以传递这样的变量:

mbutton=Button(root, text='Click Me', command=lambda: mhello(ment)).pack()

然后我们需要从我们的按钮调用它:

mainloop

我们需要实际调用root.mainloop() 以使代码正常运行:

{{1}}

如果没有,将不会运行任何GUI。

在设计层面上,我通常会创建类来存储GUI中相同部分的变量,以避免需要传递大量参数。