Python 从面向对象的tkinter获取值

Python 从面向对象的tkinter获取值,python,oop,tkinter,Python,Oop,Tkinter,我正在创建面向对象的tkinter应用程序,但我找不到从条目中获取值的方法 class App(tk.Frame): from verification import Verification validation = Verification() def __init__(self, parent, *args, **kwargs): tk.Frame.__init__(self, parent, *args, **kwargs) s

我正在创建面向对象的tkinter应用程序,但我找不到从条目中获取值的方法

class App(tk.Frame):
    from verification import Verification
    validation = Verification()

    def __init__(self, parent, *args, **kwargs):

        tk.Frame.__init__(self, parent, *args, **kwargs)
        self.parent = parent

        self.email = tk.Entry(self).grid(column=1, row=4)
        self.email_lb = tk.Label(self, text='Email: ', font='Helvetica 11').grid(column=0, row=4)

        self.submit = tk.Button(self, text="Check", width=30, command = self.check_validity).grid(column=1, row=11)

    def check_validity(self, *args):
        email = self.email.get()
        print(email)
但是当运行这个代码时,我得到了这个错误

Traceback (most recent call last):
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.2032.0_x64__qbz5n2kfra8p0\lib\tkinter\__init__.py", line 1895, in __call__
    return self.func(*args)
  File "C:\Users\kryst\PycharmProjects\covidForm\app.py", line 164, in check_validity
    email = self.email.get()
AttributeError: 'NoneType' object has no attribute 'get'

有人知道如何解决这个问题吗?

好的,这是一个非常常见的错误。创建tk.Entry时,需要执行以下操作:

self.email=tk.Entryself.gridcolumn=1,row=4 它创建条目,然后立即调用其.pack方法。它存储任何内容。pack始终不向self.email返回任何内容。您要做的是:

self.email=tk.Entryself self.email.gridcolumn=1,row=4
将self.email=tk.Entryself.gridcolumn=1,row=4更改为self.email=tk.Entryself;self.email.gridcolumn=1,row=4现在可以工作了,非常感谢!