微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不能在我的函数中使用 entry 的 get 方法

如何解决不能在我的函数中使用 entry 的 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,command=lambda: 
    submit(usernameEntry)).place(relx=0.5,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,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,command=lambda: submit(usernameEntry))
submitBtn.place(relx=0.5,anchor=CENTER)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。