python - 无法在我的函数中使用条目的 get 方法
问题描述
from tkinter import *
def login():
root = Tk()
root.resizable(False, False)
root.title("Log in")
root.geometry("300x200")
root.configure(bg='#AFFDFF')
def submit(usernameEntry):
with open("username.txt", "w") as myFile:
myFile.write(usernameEntry.get())
Label(root, text="Please enter your username", bg='#AFFDFF').place(relx=0.5, rely=0.35,
anchor=CENTER)
usernameEntry = Entry(root, width=25).place(relx=0.5, rely=0.5, anchor=CENTER)
submitBtn = Button(root, text="Submit", bg='#A4FFCB', command=lambda:
submit(usernameEntry)).place(relx=0.5, rely=0.65, anchor=CENTER)
root.mainloop()
我的输出是:
Traceback (most recent call last):
File "C:\Users\george\anaconda3\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
File "c:\Users\george\Desktop\rock paper scissors\interface.py", line 48, in <lambda>
submitBtn = Button(root, text="Submit", bg='#A4FFCB', command=lambda:
submit(usernameEntry)).place(relx=0.5, rely=0.65, anchor=CENTER)
File "c:\Users\george\Desktop\rock paper scissors\interface.py", line 44, in submit
myFile.write(usernameEntry.get())
AttributeError: 'NoneType' object has no attribute 'get'
请帮我解决一下这个。我现在被困了一段时间。我也尝试过不引用“usernameEntry”来提交函数,但它没有用。
解决方案
根据@acw1668 共享的链接,.place
在您的代码中返回None
,而不是条目对象,因此您的行:
usernameEntry = Entry(root, width=25).place(relx=0.5, rely=0.5, anchor=CENTER)
意味着该usernameEntry = None
行需要变为:
usernameEntry = Entry(root, width=25)
usernameEntry.place(relx=0.5, rely=0.5, anchor=CENTER)
这与您的其他变量相同,例如:
submitBtn = Button(root, text="Submit", bg='#A4FFCB', command=lambda: submit(usernameEntry)).place(relx=0.5, rely=0.65, anchor=CENTER)
应该:
submitBtn = Button(root, text="Submit", bg='#A4FFCB', command=lambda: submit(usernameEntry))
submitBtn.place(relx=0.5, rely=0.65, anchor=CENTER)
推荐阅读
- c - C - 在没有标准库的情况下打印 args
- reactjs - react - 具有多个对象深度的复杂形式
- python - 如何从seaborn heatmap python的列表或配对元素中获取每个元素?
- javascript - JavaScript - 如何使用另一个 JSON 中的 JSON ID 获取价值
- c++ - 重新排列正整数和负整数,保持元素的顺序
- centos - 在 CentOS 6 上安装 OpenVZ
- python - 内部函数捕获外部变量?
- rest - 如何使用 restAssured 存储和验证请求/响应
- c# - WH_MOUSE_LL 到 ChromiumWebBrowser (CefSharp)
- swift - 无法从格式“yyyy-MM-dd'T'HH:mm:ss+00:00”创建日期