从 tkinter 条目小部件捕获文本

Capture Text from tkinter entry widget

我正在尝试 运行 下面的脚本使用 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:

NameError: name 'e1' is not defined

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

谢谢

这不是 tkinter 而是 OOP 的问题。

您必须使用 self. 创建存在于 class

中所有方法中的变量
self.e1 = Entry()

以后

self.e1.get()

目前e1是局部变量,只存在于init_window