欢迎关注 『Python黑科技』 系列,持续更新中
欢迎关注 『Python黑科技』 系列,持续更新中
实现效果
实现思路
注册-持久化保存注册信息-登录
设置画布
这里要准备一张图片命名为背景图片.jpg
#画布
canvas = tk.Canvas(window, height=300, width=450)
#加载图片
im = Image.open("背景图片.jpg")
image_file = ImageTk.PhotoImage(im)
#image_file = tk.PhotoImage(file='images/01.gif')
image = canvas.create_image(0, 0, anchor='nw', image=image_file)
canvas.pack(side='top')
我的背景图片.jpg
业务逻辑
先进行注册才能进行登录
持久化保存已经注册的用户
usrs_info.pickle
是注册成功后生成的文件,用于保存注册用户的信息,你需要保证有代码和图片即可运行。
实现代码
文件夹结构
usrs_info.pickle
是注册成功后生成的文件,用于保存注册用户的信息,你需要保证有代码和图片即可运行。
# @Time : 2022/2/9 20:08
# @Author : 南黎
# @FileName: 登录和注册.py
import tkinter as tk
import pickle
import tkinter.messagebox
from PIL import Image, ImageTk
# 设置窗口---最开始的母体窗口
window = tk.Tk() # 建立一个窗口
window.title('欢迎登录')
window.geometry('450x300') # 窗口大小为300x200
# 画布
canvas = tk.Canvas(window, height=300, width=450)
# 加载图片
im = Image.open("背景图片.jpg")
image_file = ImageTk.PhotoImage(im)
# image_file = tk.PhotoImage(file='images/01.gif')
image = canvas.create_image(0, 0, anchor='nw', image=image_file)
canvas.pack(side='top')
# 两个文字标签,用户名和密码两个部分
tk.Label(window, text='用户名').place(x=100, y=150)
tk.Label(window, text='密 码').place(x=100, y=190)
var_usr_name = tk.StringVar() # 讲文本框的内容,定义为字符串类型
var_usr_name.set('123456789@qq.com') # 设置默认值
var_usr_pwd = tk.StringVar()
# 第一个输入框-用来输入用户名的。
# textvariable 获取文本框的内容
entry_usr_name = tk.Entry(window, textvariable=var_usr_name)
entry_usr_name.place(x=160, y=150)
# 第二个输入框-用来输入密码的。
entry_usr_pwd = tk.Entry(window, textvariable=var_usr_pwd, show='*')
entry_usr_pwd.place(x=160, y=190)
def usr_login():
usr_name = var_usr_name.get()
usr_pwd = var_usr_pwd.get()
try:
with open('usrs_info.pickle', 'rb') as usr_file:
usrs_info = pickle.load(usr_file)
except FileNotFoundError:
with open('usrs_info.pickle', 'wb') as usr_file:
usrs_info = {'admin': 'admin'}
pickle.dump(usrs_info, usr_file)
if usr_name in usrs_info:
if usr_pwd == usrs_info[usr_name]:
tk.messagebox.showinfo(
title='欢迎光临', message=usr_name + ':!登陆成功,发现你走进了!')
else:
tk.messagebox.showinfo(message='错误提示:密码不对,请重试')
else:
is_sign_up = tk.messagebox.askyesno('提示', '你还没有注册,请先注册')
print(is_sign_up)
if is_sign_up:
usr_sign_up()
# 注册按钮
def usr_sign_up():
def sign_to_Mofan_Python():
np = new_pwd.get()
npf = new_pwd_confirm.get()
nn = new_name.get()
# 上面是获取数据,下面是查看一下是否重复注册过
with open('usrs_info.pickle', 'rb') as usr_file:
exist_usr_info = pickle.load(usr_file)
if np != npf:
tk.messagebox.showerror('错误提示', '密码和确认密码必须一样')
elif nn in exist_usr_info:
tk.messagebox.showerror('错误提示', '用户名早就注册了!')
else:
exist_usr_info[nn] = np
with open('usrs_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.title('欢迎注册')
window_sign_up.geometry('360x200') # 中间是x,而不是*号
# 用户名框--这里输入用户名框。
new_name = tk.StringVar()
new_name.set('123456789@qq.com') # 设置的是默认值
tk.Label(window_sign_up, text='用户名').place(x=10, y=10)
entry_new_name = tk.Entry(window_sign_up, textvariable=new_name)
entry_new_name.place(x=100, y=10)
# 新密码框--这里输入注册时候的密码
new_pwd = tk.StringVar()
tk.Label(window_sign_up, text='密 码').place(x=10, y=50)
entry_usr_pwd = tk.Entry(window_sign_up, textvariable=new_pwd, show='*')
entry_usr_pwd.place(x=100, y=50)
# 密码确认框
new_pwd_confirm = tk.StringVar()
tk.Label(window_sign_up, text='确认密码').place(x=10, y=90)
entry_usr_pwd_confirm = tk.Entry(
window_sign_up, textvariable=new_pwd_confirm, show='*')
entry_usr_pwd_confirm.place(x=100, y=90)
btn_confirm_sign_up = tk.Button(
window_sign_up, text=' 注 册 ', command=sign_to_Mofan_Python)
btn_confirm_sign_up.place(x=120, y=130)
# 创建注册和登录按钮
btn_login = tk.Button(window, text=' 登 录 ', command=usr_login)
btn_login.place(x=150, y=230) # 用place来处理按钮的位置信息。
btn_sign_up = tk.Button(window, text=' 注 册 ', command=usr_sign_up)
btn_sign_up.place(x=250, y=230)
window.mainloop()
总结
大家喜欢的话,给个👍,点个关注!给大家分享更多有趣好玩的Python黑科技!
欢迎关注 『Python黑科技』 系列,持续更新中
欢迎关注 『Python黑科技』 系列,持续更新中
【Python黑科技】tkinter库实战7个小项目合集(保姆级图文+实现代码)
【Python黑科技】tkinter库实战制作一个计算器(保姆级图文+实现代码)
【Python黑科技】tkinter库实战制作一个记事本(保姆级图文+实现代码)
【Python黑科技】tkinter库实战用户的注册和登录(保姆级图文+实现代码)
【Python黑科技】tkinter库实战“2048”小游戏(保姆级图文+实现代码)
【Python黑科技】tkinter库实战“俄罗斯方块”小游戏(保姆级图文+实现代码)
【Python黑科技】tkinter库实战“贪吃蛇”小游戏(保姆级图文+实现代码)
【Python黑科技】tkinter库实战“连连看”小游戏(保姆级图文+实现代码)
【Python安装第三方库一行命令永久提高速度】
【使用PyInstaller打包exe】
【免登陆爬虫一键下载知乎文章图片(保姆级图文+实现代码)】
【孤独的程序员和AI机器人朋友聊天解闷(免费接口+保姆级图文+实现代码注释)】
【几行代码绘制gif动图(保姆级图文+实现代码)】
【几行代码实现网课定时循环截屏,保存重要知识点(保姆级图文+实现代码)】
【常用的user_agent 浏览器头爬虫模拟用户(保姆级图文+实现代码)】
【更多内容敬请期待】