Python 从tkinter条目小部件捕获文本

Python 从tkinter条目小部件捕获文本,python,tkinter,tkinter-entry,Python,Tkinter,Tkinter Entry,我正在尝试运行下面的脚本,以使用tkinter将用户输入的文本捕获到表单中 from tkinter import * class Window(Frame): def __init__(self, master = None): Frame.__init__(self, master) self.master = master self.init_window() # create init window def in

我正在尝试运行下面的脚本,以使用tkinter将用户输入的文本捕获到表单中

from tkinter import *

class Window(Frame):
    def __init__(self, master = None):
        Frame.__init__(self, master)
        self.master = master
        self.init_window()

    # create init window
    def init_window(self):
        self.master.title("Example Title")
        self.pack(fill = BOTH, expand = 1)

        #submit button
        submitButton = Button(self, text = "submit", command = self.showEntry).grid(row = 6, column = 1, sticky = W, pady = 5)

        # entry widgets
        Label(self, text = "Firstname").grid(row = 0)    
        Label(self, text = "Surname").grid(row = 1)
        Label(self, text = "Age").grid(row = 2)    
        Label(self, text = "Gender").grid(row = 3)

        e1 = Entry(self)
        e2 = Entry(self)
        e3 = Entry(self)
        e4 = Entry(self)

        e1.grid(row=0, column=1)
        e2.grid(row=1, column=1)
        e3.grid(row=2, column=1)
        e4.grid(row=3, column=1)

    # show entries
    def showEntry(self):
        txt = e1.get()
        print("Firstname is %s" % txt)
        root.destroy()  


root = Tk()
root.geometry("400x300")
app = Window(root)

app.mainloop()
执行此操作时,会出现以下名称错误:

NameError:未定义名称“e1”

我是tkinter的新手,因此,如果您能帮助我们获取用户输入的文本,以及为什么会出现此错误,我们将不胜感激


谢谢

这不是
tkinter
问题,而是
OOP
问题

您必须使用
self.
来创建存在于类中所有方法中的变量

self.e1 = Entry()
后来

self.e1.get()

目前,
e1
是局部变量,仅存在于
init\u窗口中

这不是一个Tkinter问题;是Python
e1
init\u窗口中是局部作用域。您可能需要一个实例变量。请始终将完整的错误消息(回溯)放在问题中(作为文本,而不是屏幕截图)。还有其他有用的信息。这不是
tkinter
问题,而是面向对象编程问题-您必须使用
self.
才能在类中的其他方法中访问变量。顺便说一句:常见错误
var=Widget().grid()
-这样您就可以将
None
分配给
var
,因为
grid()
/
pack()
/
place()
返回
None
。您必须在两行中执行
var=Widget()
var.grid()
或跳过变量
Widget().grid()