欢迎光临UUpython
最大、最新、最全的Python代码收集站

简单的用户登录界面和注册界面

这段代码使用tkinter库创建了一个简单的用户登录界面和注册界面,运行后会弹出一个图形界面,用户可以在界面中输入用户名和密码来登录或注册。

以下是代码中各部分的主要功能解释:

  1. 创建主窗口 root 并设置窗口标题、大小和位置。
  2. 创建 Canvas 组件用于显示图片,通过 ImageTk.PhotoImage 将图片转换为可在界面显示的格式。
  3. 创建标签和输入框,用于用户输入用户名和密码。
  4. 定义 usr_log_in 函数,用于验证用户输入的用户名和密码是否正确,同时支持用户注册。
  5. 定义 usr_sign_up 函数,用于弹出注册窗口,用户可以在该窗口输入用户名和密码来注册。
  6. 创建按钮,分别用于登录、注册和清空输入框。
  7. 运行主循环 root.mainloop() 以启动图形界面的事件循环。

需要注意的是,代码中的图片路径和文件路径需要根据你的实际情况进行调整,另外,代码中没有进行密码加密存储,实际应用中应该考虑加密存储用户的密码。同时,图形界面的美观性和布局可以根据需求进行进一步的调整。

import tkinter as tk
import tkinter.messagebox
import pickle
from PIL import Image, ImageTk
import urllib.request
root = tk.Tk()
root.title('欢迎进入云学习平台')
root.geometry('600x400+300+150')
canvas = tk.Canvas(root, height=400, width=600)
img = Image.open('E:p/ledo.png')
img1 = img.resize((600, 400), Image.ANTIALIAS)
img_root = ImageTk.PhotoImage(img1)
canvas.create_image(300, 200, image=img_root)
canvas.pack(side='top')
label1 = tk.Label(root, text="用户名:", bg="white", font=('宋体', 12), fg='black').place(x=300, y=150)
label2 = tk.Label(root, text="密  码:", bg="white", font=('宋体', 12), fg='black').place(x=300, y=200)
entry_name = tk.Entry(root)
entry_name.place(x=400, y=150)
entry_pwd = tk.Entry(root)
entry_pwd.place(x=400, y=200)
entry_pwd['show'] = '*'
def usr_log_in():
    name = entry_name.get()
    pwd = entry_pwd.get()
    try:
        with open('E:p\\usr_info.pickle', 'rb') as usr_file:
            usrs_info = pickle.load(usr_file)
    except FileNotFoundError:
        with open('E:p\\usr_info.pickle', 'wb')as usr_file:
            usrs_info = {'admin': 'admin'}
            pickle.dump(usrs_info, usr_file)
    if name in usrs_info:
        if pwd == usrs_info[name]:
            tk.messagebox.showinfo(title='welcome', message='欢迎您:'+name)
        else:
            tk.messagebox.showerror(message='密码错误')
    elif name == '' or pwd == '':
        tk.messagebox.showerror(message='用户名或密码为空')
    else:
        is_signup = tk.messagebox.askyesno('欢迎', '您还没有注册,是否现在注册')
        if is_signup:
            usr_sign_up()
def usr_sign_up():
    def signtowcg():
        nn = entry3.get()
        np = entry4.get()
        npf= entry5.get()
        try:
            with open('E:p\\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] = np
            with open('E:p\\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(root)
    window_sign_up.geometry('350x200+420+280')
    window_sign_up.title('注册')
    label3=tk.Label(window_sign_up,text='用户名:')
    label3.place(x=20,y=15)
    entry3 = tk.Entry(window_sign_up)
    entry3.place(x=140,y=15)
    label4 = tk.Label(window_sign_up, text='请输入密码:')
    label4.place(x=20, y=55)
    entry4 = tk.Entry(window_sign_up)
    entry4.place(x=140, y=55)
    entry4['show']='*'
    label5= tk.Label(window_sign_up, text='请再次输入密码:')
    label5.place(x=20, y=95)
    entry5=tk.Entry(window_sign_up)
    entry5.place(x=140, y=95)
    entry5['show'] = '*'
    button4 = tk.Button(window_sign_up, text='确认注册', command=signtowcg)
    button4.place(x=140, y=140)
def delete():
    entry_name.delete(0,'end')
    entry_pwd.delete(0, 'end')
button1 = tk.Button(root, text='登录', font=('宋体', 12),fg='black', command=usr_log_in).place(x=300, y=270)
button2 = tk.Button(root, text='注册', font=('宋体', 12),fg='black', command=usr_sign_up).place(x=400, y=270)
button3 = tk.Button(root, text='退出', font=('宋体', 12),fg='black', command=delete).place(x=500, y=270)
root.mainloop()
赞(0) 打赏
未经允许不得转载:UUpython » 简单的用户登录界面和注册界面
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!