username=tk.StringVar() password=tk.StringVar() # 创建标签和输入框组件 label_username =tk.Label(window_1,text="用户名").place(relx=0.25,rely=0.25,width=40,height=20) entry_username =tk.Entry(window_1).place(relx=0.35,rely=0.25,width=150,height=20) label_password =tk.Label(window_1,text="密码").place(relx=0.25,rely=0.35,width=40,height=20) entry_password =tk.Entry(window_1,show="*").place(relx=0.35,rely=0.35,width=150,height=20) def login(): #username = entry_username #password = entry_password username = entry_username.get() password = entry_password.get() # 验证用户名和密码是否正确,如果正确则进行登录操作 if username == '2021160138' and password == 'aa': window_2() else: print("登录失败,用户名或密码错误。") b1=tk.Button(window_1,text='登陆',command=login).place(relx=0.25,rely=0.5,width=40,height=20) b2=tk.Button(window_1,text='退出',command=login).place(relx=0.55,rely=0.5,width=40,height=20)报错'NoneType' object has no attribute 'get'怎么改
时间: 2023-08-11 17:05:07 浏览: 91
这个错误是因为你在创建 `entry_username` 和 `entry_password` 时,使用了 `place()` 方法,该方法返回的是 `None` 而不是 `Entry` 对象,因此无法调用 `get()` 方法。
你需要将 `place()` 方法调用与 `Entry` 对象的创建分开,如下所示:
```python
entry_username = tk.Entry(window_1)
entry_username.place(relx=0.35, rely=0.25, width=150, height=20)
entry_password = tk.Entry(window_1, show="*")
entry_password.place(relx=0.35, rely=0.35, width=150, height=20)
```
这样你就可以正确地获取输入框中的值了。
相关问题
class LoginWindow: def __init__(self, master): self.master = master self.master.title("BL 製造表單點檢系統") self.master.geometry("300x250+400+250") self.master.resizable(0, 0) self.username = tk.StringVar() self.password = tk.StringVar() tk.Label(self.master, text="賬號").grid(row=0, column=0, padx=5, pady=5) tk.Entry(self.master, textvariable=self.username).grid(row=0, column=1, padx=5, pady=5) tk.Label(self.master, text="密碼").grid(row=1, column=0, padx=5, pady=5) tk.Entry(self.master, textvariable=self.password, show="*").grid(row=1, column=1, padx=5, pady=5) tk.Button(self.master, text="確認", command=self.login).grid(row=2, column=0, columnspan=2, padx=5, pady=5) def login(self): if self.username.get() == "smt" and self.password.get() == "bl": self.master.destroy() root = tk.Tk() app = ExcelApp(root) root.mainloop() else: messagebox.showwarning("Invalid Credentials", "密碼或賬號錯誤.")將這段代碼的窗口優化得更美觀一些
class LoginWindow:
def __init__(self, master):
self.master = master
self.master.title("BL 製造表單點檢系統")
self.master.geometry("300x250+400+250")
self.master.resizable(0, 0)
self.username = tk.StringVar()
self.password = tk.StringVar()
tk.Label(self.master, text="賬號").grid(row=0, column=0, padx=5, pady=5)
tk.Entry(self.master, textvariable=self.username, width=20).grid(row=0, column=1, padx=5, pady=5)
tk.Label(self.master, text="密碼").grid(row=1, column=0, padx=5, pady=5)
tk.Entry(self.master, textvariable=self.password, show="*", width=20).grid(row=1, column=1, padx=5, pady=5)
tk.Button(self.master, text="確認", command=self.login, width=20, bg="#4CAF50", fg="white").grid(row=2, column=0, columnspan=2, padx=5, pady=5)
def login(self):
if self.username.get() == "smt" and self.password.get() == "bl":
self.master.destroy()
root = tk.Tk()
app = ExcelApp(root)
root.mainloop()
else:
messagebox.showwarning("Invalid Credentials", "密碼或賬號錯誤.")
# 更改了输入框的宽度和按钮的颜色和宽度,使界面更美观
from tkinter import from tkinter import messagebox #创建主窗口 root = Tk() root.title("登录界面")root.geometry("30x200") # 用户名和密码 username = StringVar()password = StringVar() 晋录函数 def login(): if username .get() == "admin” and password.get() "123456":22messagebox.showinfo("登录成功”"欢迎使用!")else: messagebox.showwarning("登录失败",“用户名或密码错误!“)
代码存在一些语法错误,下面是一个修改后的示例代码:
```python
from tkinter import *
from tkinter import messagebox
# 创建主窗口
root = Tk()
root.title("登录界面")
root.geometry("300x200")
# 用户名和密码
username = StringVar()
password = StringVar()
# 登录函数
def login():
if username.get() == "admin" and password.get() == "123456":
messagebox.showinfo("登录成功", "欢迎使用!")
else:
messagebox.showwarning("登录失败", "用户名或密码错误!")
# 用户名标签和输入框
label_username = Label(root, text="用户名:")
entry_username = Entry(root, textvariable=username)
label_username.pack()
entry_username.pack()
# 密码标签和输入框
label_password = Label(root, text="密码:")
entry_password = Entry(root, textvariable=password, show="*")
label_password.pack()
entry_password.pack()
# 登录按钮
button_login = Button(root, text="登录", command=login)
button_login.pack()
# 进入主循环
root.mainloop()
```
在这个示例中,我们使用 `Label` 和 `Entry` 创建了用户名和密码的标签和输入框,使用 `Button` 创建了登录按钮,并将它们放置到窗口上。在登录函数中,我们判断用户输入的用户名和密码是否正确,如果正确,弹出登录成功的提示框,否则弹出登录失败的提示框。最后,我们通过调用 `mainloop()` 进入窗口的主循环,使程序持续运行,直到用户关闭窗口。
阅读全文