Tkinter 无法在单击按钮时获取函数值
Tkinter can't get values to the function on button click
所以,我尝试从输入 (3) 中获取值,并在单击按钮时将它们传递给函数。
这是我现在拥有的:
Label(self.master, text="Name").grid(row=0, sticky=W)
Label(self.master, text="Username").grid(row=1, sticky=W)
Label(self.master, text="Email").grid(row=2, sticky=W)
self.e_name = Entry(self.master).grid(row=0, column=1)
self.e_username = Entry(self.master).grid(row=1, column=1)
self.e_email = Entry(self.master).grid(row=2, column=1)
Button(self.master, text="Login", command=self.login_client).grid(row=3, column=1, sticky=E)
以及函数:
def login_client(self):
print(self.e_name.get())
现在,我收到此错误:AttributeError: 'NoneType' object has no attribute 'get'
...
文件的完整代码可以在这里找到:https://gist.github.com/RosiersRobin/343c0194fde2e8e3184f24cb5aecac28
我只想在函数中给出用户的输入 login_client
您的问题是 .grid()
电话。网格 returns None
,因此 self.e_name
将是 None
。只需将这些行更改为这些行:
self.e_name = Entry(self.master)
self.e_name.grid(row=0, column=1)
self.e_username = Entry(self.master)
self.e_username.grid(row=1, column=1)
self.e_email = Entry(self.master)
self.e_email.grid(row=2, column=1)
所以,我尝试从输入 (3) 中获取值,并在单击按钮时将它们传递给函数。
这是我现在拥有的:
Label(self.master, text="Name").grid(row=0, sticky=W)
Label(self.master, text="Username").grid(row=1, sticky=W)
Label(self.master, text="Email").grid(row=2, sticky=W)
self.e_name = Entry(self.master).grid(row=0, column=1)
self.e_username = Entry(self.master).grid(row=1, column=1)
self.e_email = Entry(self.master).grid(row=2, column=1)
Button(self.master, text="Login", command=self.login_client).grid(row=3, column=1, sticky=E)
以及函数:
def login_client(self):
print(self.e_name.get())
现在,我收到此错误:AttributeError: 'NoneType' object has no attribute 'get'
...
文件的完整代码可以在这里找到:https://gist.github.com/RosiersRobin/343c0194fde2e8e3184f24cb5aecac28
我只想在函数中给出用户的输入 login_client
您的问题是 .grid()
电话。网格 returns None
,因此 self.e_name
将是 None
。只需将这些行更改为这些行:
self.e_name = Entry(self.master)
self.e_name.grid(row=0, column=1)
self.e_username = Entry(self.master)
self.e_username.grid(row=1, column=1)
self.e_email = Entry(self.master)
self.e_email.grid(row=2, column=1)