直接贴效果
贴代码
import tkinter
import tkinter.messagebox
username_data = ['admin']
password_data = ['123456']
# 创建应用程序窗口
root = tkinter.Tk()
root.title("学生管理系统")
root.geometry("500x300")
un = tkinter.StringVar()
un.set('')
pw = tkinter.StringVar()
pw.set('')
def login():
username = un.get()
password = pw.get()
if username in username_data:
if password == password_data[username_data.index(username)]:
tkinter.messagebox.showinfo(title='学生管理系统', message='登录成功!')
else:
tkinter.messagebox.showerror('学生管理系统', message='账号或密码错误!')
else:
tkinter.messagebox.showerror('学生管理系统', message='账号或密码错误!')
def register():
username = un.get()
password = pw.get()
if username != '' and password != '':
if username in username_data:
tkinter.messagebox.showinfo(title='学生管理系统', message='该用户名已存在!')
else:
username_data.append(username)
password_data.append(password)
tkinter.messagebox.showinfo(title='学生管理系统', message='注册成功!')
else:
tkinter.messagebox.showinfo(title='学生管理系统', message='请将信息补充完整!')
def cancel():
un.set('')
pw.set('')
tkinter.Label(root, text='请输入用户名和密码', justify=tkinter.CENTER, width=150).place(x=175, y=10, width=150, height=20)
tkinter.Label(root, text='用户名:', justify=tkinter.RIGHT, width=80).place(x=135, y=50, width=80, height=20)
tkinter.Entry(root, width=80, textvariable=un).place(x=215, y=50, width=150, height=20)
tkinter.Label(root, text='密 码:', justify=tkinter.RIGHT, width=80).place(x=135, y=90, width=80, height=20)
tkinter.Entry(root, show='*', width=80, textvariable=pw).place(x=215, y=90, width=150, height=20)
tkinter.Button(root, text='登录', command=login).place(x=155, y=130, width=50, height=20)
tkinter.Button(root, text='注册', command=register).place(x=225, y=130, width=50, height=20)
tkinter.Button(root, text='取消', command=cancel).place(x=315, y=130, width=50, height=20)
# 启动消息循环
root.mainloop()
这个是将账号密码保存在两个数组里边了,还有一种方法是用列表和字典嵌套存账号和密码
import tkinter
import tkinter.messagebox
student = [
{"username": "admin", "password": "123456"}
]
# 创建应用程序窗口
win = tkinter.Tk()
win.title("学生管理系统")
win.geometry("300x200")
name = tkinter.StringVar()
name.set('')
passwords = tkinter.StringVar()
passwords.set('')
def login():
username = name.get()
password = passwords.get()
for i in range(0, len(student)):
if username in student[i]["username"]:
if password == student[i]["password"]:
tkinter.messagebox.showinfo(title='学生管理系统', message='登录成功!')
else:
tkinter.messagebox.showerror('学生管理系统', message='账号或密码错误!')
break
if i == len(student) - 1:
tkinter.messagebox.showerror('学生管理系统', message='账号或密码错误!')
def register():
username = name.get()
password = passwords.get()
if username != '' and password != '':
for i in range(0, len(student)):
if username == student[i]["username"]:
tkinter.messagebox.showinfo(title='学生管理系统', message='该用户名已存在!')
break
else:
if i == len(student) - 1:
item = {"username": username, "password": password}
student.append(item)
tkinter.messagebox.showinfo(title='学生管理系统', message='注册成功!')
break
else:
tkinter.messagebox.showinfo(title='学生管理系统', message='请将信息补充完整!')
def cancel():
name.set('')
passwords.set('')
tkinter.Label(win, text='请输入用户名和密码', justify=tkinter.CENTER, width=150).place(x=75, y=10, width=150, height=20)
tkinter.Label(win, text='用户名:', justify=tkinter.RIGHT, width=80).place(x=35, y=50, width=80, height=20)
tkinter.Entry(win, width=80, textvariable=name).place(x=115, y=50, width=150, height=20)
tkinter.Label(win, text='密 码:', justify=tkinter.RIGHT, width=80).place(x=35, y=90, width=80, height=20)
tkinter.Entry(win, show='*', width=80, textvariable=passwords).place(x=115, y=90, width=150, height=20)
tkinter.Button(win, text='登录', command=login).place(x=55, y=130, width=50, height=20)
tkinter.Button(win, text='注册', command=register).place(x=135, y=130, width=50, height=20)
tkinter.Button(win, text='取消', command=cancel).place(x=215, y=130, width=50, height=20)
# 启动消息循环
win.mainloop()
效果相同