我如何从 Entry 小部件获取文本?
How do i get text from an Entry widget?
刚开始学习python,想做一个简单的登录界面。我尝试按照教程进行操作,但由于某种原因,我的代码总是出错。这是错误:
第 18 行,在 sign_in
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()
问题是当你定义用户名和密码时,你也在磨它。相反,您应该分别对用户名和密码条目进行网格划分,如下所示:
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()
刚开始学习python,想做一个简单的登录界面。我尝试按照教程进行操作,但由于某种原因,我的代码总是出错。这是错误: 第 18 行,在 sign_in 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()
问题是当你定义用户名和密码时,你也在磨它。相反,您应该分别对用户名和密码条目进行网格划分,如下所示:
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()