【问题标题】:How do i get text from an Entry widget? [duplicate]如何从 Entry 小部件中获取文本? [复制]
【发布时间】:2021-07-09 02:42:41
【问题描述】:

我刚开始学习python,想做一个简单的登录GUI。我尝试按照教程进行操作,但由于某种原因,我的代码总是出错。这是错误: 第 18 行,登录 print(f"我的用户名是 {username.get()} 我的密码是 {password.get()}") AttributeError: 'NoneType' 对象没有属性 'get'

from tkinter import *

main_window = Tk()



# ---------- LABELS ----------
Label(main_window, text = "Username: ").grid(row = 0, column = 0)
Label(main_window, text = "Password: ").grid(row = 1, column = 0)

# ---------- TEXT INPUT ----------
username = Entry(main_window, width = 50, borderwidth = 3.5).grid(row = 0, column = 1)
password = Entry(main_window, width = 50, borderwidth = 3.5, show = "*").grid(row = 1, column = 1)

# ---------- METHODS ----------
def sign_in():
    print(f"My username is {username.get()} and my password is {password.get()}")

# ---------- BUTTON ----------
Button(main_window, text = "Sign In", command = sign_in).grid(row = 2, column = 1)

# ---------- MAIN LOOP ----------
main_window.mainloop()

【问题讨论】:

    标签: python python-3.x tkinter widget


    【解决方案1】:

    问题是当您定义用户名和密码时,您也在对其进行网格化。相反,您应该将用户名和密码条目分别网格化,如下所示:

        from tkinter import *
    
        main_window = Tk()
        
        
        
        # ---------- LABELS ----------
        Label(main_window, text = "Username: ").grid(row = 0, column = 0)
        Label(main_window, text = "Password: ").grid(row = 1, column = 0)
        
        # ---------- TEXT INPUT ----------
        username = Entry(main_window, width = 50, borderwidth = 3.5) # Remove grid here
        password = Entry(main_window, width = 50, borderwidth = 3.5, show = "*")
    
        username.grid(row=0, column=1) # grid Entry's seperately
        password.grid(row=1, column=1)
        
        # ---------- METHODS ----------
        def sign_in():
            print(f"My username is {username.get()} and my password is {password.get()}")
        
        # ---------- BUTTON ----------
        Button(main_window, text = "Sign In", command = sign_in).grid(row = 2, column = 1)
        
        # ---------- MAIN LOOP ----------
        main_window.mainloop()
    

    【讨论】:

    • “另外,你不能在 tkinter 中改变 Entry 对象的宽度” - 是的,你可以。你是说身高吗?
    猜你喜欢
    • 1970-01-01
    • 2015-05-10
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 2012-04-06
    • 1970-01-01
    • 2020-06-05
    相关资源
    最近更新 更多