junyichen123 2021-07-09 20:57 采纳率: 100%
浏览 1581
已采纳

Python中Entry内容用.get()方法获取失败,请问如何处理

from tkinter import*
import tkinter as tk

def printinfo():
    print("用户名是:%s\n 密码是:%s" % (accountE.get(),pwdE.get()))
    
root=tk.Tk()
root.title("获取文本框中的内容用.get()方法!")

accountL=Label(root,text="用户名:").grid(row=1)
pwdL=Label(root,text="密码:").grid(row=2)


u1=tk.StringVar()
p1=tk.StringVar()

accountE=tk.Entry(root,textvariable=u1).grid(row=1,column=1)
pwdE=tk.Entry(root,show="*",textvariable=p1).grid(row=2,column=1,pady=10)

loginBtn=Button(root,text="登录",command=lambda :printinfo()).grid(row=3,column=0)
quitBtn=Button(root,text="退出",command=root.quit).grid(row=3,column=1)


root.mainloop()
               

报错信息:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\junyi\AppData\Local\Programs\Python\Python39\lib\tkinter_init_.py", line 1892, in call
return self.func(*args)
File "D:\py tkinter\获取文本框输入的内容.py", line 23, in
loginBtn=Button(root,text="登录",command=lambda :printinfo()).grid(row=3,column=0)
File "D:\py tkinter\获取文本框输入的内容.py", line 5, in printinfo
print("用户名是:%s\n 密码是:%s" % (accountE.get(),pwdE.get()))
AttributeError: 'NoneType' object has no attribute 'get'

刚学python ,在学习tkinter,请教如何修改以及为什么会出现这样的错误。

  • 写回答

2条回答 默认 最新

  • 关注

    print("用户名是:%s\n 密码是:%s" % (u1.get(),p1.get()))


    因为你这个的代码tk.Entry(root,textvariable=u1)创建输入框后直接调用.grid(row=1,column=1) 返回赋值给accountE 的是grid()方法的返回值,而不是tk.Entry()创建的输入框对象。 grid()方法没有返回值,会返回None赋值给accountE。 None自然不能调用.get()了
    改成这样就好了
    accountE=tk.Entry(root,textvariable=u1)
    accountE.grid(row=1,column=1)
    pwdE=tk.Entry(root,show="*",textvariable=p1)
    pwdE.grid(row=2,column=1,pady=10)

    from tkinter import*
    import tkinter as tk
    def printinfo():
        print("用户名是:%s\n 密码是:%s" % (accountE.get(),pwdE.get()))
    root=tk.Tk()
    root.title("获取文本框中的内容用.get()方法!")
    accountL=Label(root,text="用户名:").grid(row=1)
    pwdL=Label(root,text="密码:").grid(row=2)
    
    u1=tk.StringVar()
    p1=tk.StringVar()
    accountE=tk.Entry(root,textvariable=u1)
    accountE.grid(row=1,column=1)
    pwdE=tk.Entry(root,show="*",textvariable=p1)
    pwdE.grid(row=2,column=1,pady=10)
    loginBtn=Button(root,text="登录",command=lambda :printinfo())
    loginBtn.grid(row=3,column=0)
    quitBtn=Button(root,text="退出",command=root.quit)
    quitBtn.grid(row=3,column=1)
    
    root.mainloop()
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 7月9日
  • 创建了问题 7月9日

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看