新乡做网站的公司,有哪些网站使用ftp,wordpress怎么发邮件,常见的简单的app开发1 需解决的问题#xff1a; 1.1如何用python做一个用户登录界面#xff1f; 1.2需要用到哪些库、模块#xff1f;
2 问题解决#xff1a; 2.1 回答 1.1 #xff1a;合理即可#xff0c;无标准回答。 2.2 回答 1.2 #xff1a;tk库#xff08;缩写#xff09;、GUL界面…1 需解决的问题 1.1如何用python做一个用户登录界面 1.2需要用到哪些库、模块
2 问题解决 2.1 回答 1.1 合理即可无标准回答。 2.2 回答 1.2 tk库缩写、GUL界面、tkinter。messagebox模块...... 3 代码展示
# -*- coding: utf-8 -*-
import tkinter as tk
import tkinter.messagebox
import pickle
import random# 窗口
window tk.Tk()
window.title(欢迎进入python)
window.geometry(450x200)
# 画布放置图片
# canvastk.Canvas(window,height300,width500)
# imagefiletk.PhotoImage(fileqm.png)
# imagecanvas.create_image(0,0,anchornw,imageimagefile)
# canvas.pack(sidetop)
# 标签 用户名密码
Verification_Code random.randint(1000, 9999)#设置一个随机的四位数
Verification_Code str(Verification_Code)#把类型转换为str型
print(type(Verification_Code))
tk.Label(window, text用户名:).place(x100, y30)
tk.Label(window, text密码:).place(x100, y70)
tk.Label(window, text验证码).place(x100, y110)
tk.Label(window, textVerification_Code).place(x320, y110)
# 用户名输入框
var_usr_name tk.StringVar()
entry_usr_name tk.Entry(window, textvariablevar_usr_name)
entry_usr_name.place(x160, y30)
# 密码输入框
var_usr_pwd tk.StringVar()
entry_usr_pwd tk.Entry(window, textvariablevar_usr_pwd, show*)
entry_usr_pwd.place(x160, y70)
#验证码输入框
var_usr_yzm tk.StringVar()
entry_usr_yzm tk.Entry(window, textvariablevar_usr_yzm)
entry_usr_yzm.place(x160, y110)# 登录函数
def usr_log_in():# 输入框获取用户名密码usr_name var_usr_name.get()usr_pwd var_usr_pwd.get()usr_yzm var_usr_yzm.get()#测试类型print(type(usr_yzm),type(Verification_Code))# 从本地字典获取用户信息如果没有则新建本地数据库try:with open(usr_info.pickle, rb) as usr_file:usrs_info pickle.load(usr_file)except FileNotFoundError:with open(usr_info.pickle, wb) as usr_file:usrs_info {admin: admin}pickle.dump(usrs_info, usr_file)# 判断验证码是否正确用户名和密码是否匹配if usr_yzm Verification_Code:if usr_name in usrs_info:if usr_pwd usrs_info[usr_name]:tk.messagebox.showinfo(titlewelcome,message欢迎您 usr_name)else:tk.messagebox.showerror(message密码错误)# 用户名密码不能为空elif usr_name or usr_pwd :tk.messagebox.showerror(message用户名或密码为空)# 不在数据库中弹出是否注册的框else:is_signup tk.messagebox.askyesno(欢迎, 您还没有注册是否现在注册)if is_signup:usr_sign_up()elif usr_yzm :tk.messagebox.showerror(message验证码不能为空)else:tk.messagebox.showerror(message验证码有误)# 注册函数
def usr_sign_up():# 确认注册时的相应函数def signtowcg():# 获取输入框内的内容nn new_name.get()np new_pwd.get()npf new_pwd_confirm.get()# 本地加载已有用户信息,如果没有则已有用户信息为空try:with open(usr_info.pickle, rb) as usr_file:exist_usr_info pickle.load(usr_file)except FileNotFoundError:exist_usr_info {}# 检查用户名存在、密码为空、密码前后不一致if nn in exist_usr_info:tk.messagebox.showerror(错误, 用户名已存在)elif np or nn :tk.messagebox.showerror(错误, 用户名或密码为空)elif np ! npf:tk.messagebox.showerror(错误, 密码前后不一致)# 注册信息没有问题则将用户名密码写入数据库else:exist_usr_info[nn] npwith open(usr_info.pickle, wb) as usr_file:pickle.dump(exist_usr_info, usr_file)tk.messagebox.showinfo(欢迎, 注册成功)# 注册成功关闭注册框window_sign_up.destroy()# 新建注册界面window_sign_up tk.Toplevel(window)window_sign_up.geometry(350x200)window_sign_up.title(注册)# 用户名变量及标签、输入框new_name tk.StringVar()tk.Label(window_sign_up, text用户名).place(x10, y10)tk.Entry(window_sign_up, textvariablenew_name).place(x150, y10)# 密码变量及标签、输入框new_pwd tk.StringVar()tk.Label(window_sign_up, text请输入密码).place(x10, y50)tk.Entry(window_sign_up, textvariablenew_pwd, show*).place(x150, y50)# 重复密码变量及标签、输入框new_pwd_confirm tk.StringVar()tk.Label(window_sign_up, text请再次输入密码).place(x10, y90)tk.Entry(window_sign_up, textvariablenew_pwd_confirm, show*).place(x150, y90)# 确认注册按钮及位置bt_confirm_sign_up tk.Button(window_sign_up, text确认注册,commandsigntowcg)bt_confirm_sign_up.place(x150, y130)# 退出的函数
def usr_sign_quit():window.destroy()# 登录 注册按钮
bt_login tk.Button(window, text登录, commandusr_log_in)
bt_login.place(x140, y150)
bt_logup tk.Button(window, text注册, commandusr_sign_up)
bt_logup.place(x210, y150)
bt_logquit tk.Button(window, text退出, commandusr_sign_quit)
bt_logquit.place(x280, y150)
# 主循环
window.mainloop() 3.1 代码运行结果展示 需注意如果是未注册用户系统会提示用户先注册在登录。如是已注册用户可以直接登录。
注册页面 填写完之后点击“确认注册”系统会弹出一个“注册成功”的弹窗。
4 总结
这段代码是一个简单的登录注册系统的实现使用了tkinter库进行图形化界面的开发。
首先导入了tkinter库以及其他需要的模块tkinter.messagebox、pickle、random创建一个窗口并设置标题和大小在窗口中添加了用户名、密码、验证码等标签和输入框定义了登录函数usr_log_in和注册函数usr_sign_up登录函数中首先获取用户输入的用户名、密码和验证码并从本地数据库中读取用户信息判断验证码是否正确如果正确则继续判断用户名和密码是否匹配如果不匹配则弹出密码错误提示框如果用户名存在但密码为空则弹出用户名或密码为空的提示框如果用户名不存在则弹出是否注册的提示框用户选择注册后调用注册函数注册函数中创建了一个新窗口并添加了用户名、密码和确认密码的输入框确认注册后首先检查用户名是否已存在如果存在则弹出用户名已存在的错误提示框如果密码为空或用户名为空则弹出用户名或密码为空的错误提示框如果两次输入的密码不一致则弹出密码前后不一致的错误提示框如果注册信息没有问题则将用户名和密码写入本地数据库并弹出注册成功的提示框最后添加了登录、注册、退出按钮并通过按钮的command属性调用相关的函数进入主循环等待用户交互。
需要注意的地方
该程序使用了pickle模块来读写本地数据库usr_info.pickle该文件保存了用户名和密码的字典验证码使用了random模块生成一个四位数作为用户登录时的验证码用户需要输入相同的验证码才能登录成功程序使用了tkinter.messagebox模块弹出提示框。