• 游戏登录界面制作


    登录界面制作

    1.导入模块和初始化窗口

    1. import subprocess
    2. import tkinter as tk
    3. import pickle
    4. from tkinter import messagebox
    5. window = tk.Tk()
    6. window.title('Welcome')
    7. window.geometry('450x300')

    导入必要的模块,并初始化了主窗口window,设置了窗口的标题和大小。

    2.创建画布和图像

    1. canvas = tk.Canvas(window, height=200, width=500)
    2. image_file = tk.PhotoImage(file='welcome.gif')
    3. image = canvas.create_image(0, 0, anchor='nw', image=image_file)
    4. canvas.pack(side='top')

    创建一个画布canvas,并在画布上显示了一个welcome.gif图像(结尾附图像)

    3. 用户信息输入

    1. tk.Label(window, text='User name').place(x=50, y=150)
    2. tk.Label(window, text='Password').place(x=50, y=190)
    3. var_usr_name = tk.StringVar()
    4. var_usr_name.set('example@python.com')
    5. entry_usr_name = tk.Entry(window, textvariable=var_usr_name)
    6. entry_usr_name.place(x=160, y=150)
    7. var_usr_pwd = tk.StringVar()
    8. entry_usr_pwd = tk.Entry(window, textvariable=var_usr_pwd, show='*')
    9. entry_usr_pwd.place(x=160, y=190)

    创建了两个标签User name和Password,以及对应的输入框entry_usr_name和entry_usr_pwd,用于用户输入用户名和密码。

    4.登录函数

    1. def usr_login():
    2.     usr_name = var_usr_name.get()
    3.     usr_pwd = var_usr_pwd.get()
    4.     print(usr_name)
    5.     try:
    6.         with open('usrs_info.pickle', 'rb') as usr_file:
    7.             print('1')
    8.             usrs_info = pickle.load(usr_file)
    9.             print(usrs_info)
    10.     except FileNotFoundError:
    11.         with open('usrs_info.pickle', 'wb') as usr_file:
    12.             print('2')
    13.             usrs_info = {'admin': 'admin'}
    14.             pickle.dump(usrs_info, usr_file)  # 序列化
    15.     print('OK')
    16.     print('usr_name:', usr_name)
    17.     if usr_name in usrs_info:
    18.         print('3')
    19.         if usr_pwd == usrs_info[usr_name]:
    20.             tk.messagebox.showinfo(title='Welcome', message='登陆成功!!用户命:' + usr_name)
    21.             window.destroy()
    22.             # import lx3
    23.             subprocess.Popen(["python", "九宫格画布.py"])
    24.         else:
    25.             tk.messagebox.showerror(message='错误,密码错误,请重试.')
    26.     else:
    27.         print('4')
    28.         is_sign_up = tk.messagebox.askyesno(title='Welcome', message='你还没有注册呢。今天就报名?')
    29.         if is_sign_up:
    30.             usr_sign_up()

    标红的位置为连接到同目录下的游戏程序(本博客2024.04.18日发布的程序)

    登录函数usr_login包含了登录的逻辑,包括读取用户信息、验证用户名和密码,并显示相应的消息框。

    5.注册函数

    1. def usr_sign_up():
    2.     print('开始注册')
    3.     def sign_up():
    4.         # 获取输入
    5.         nn = new_name.get()
    6.         np = new_pwd.get()
    7.         npf = new_pwd_confirm.get()
    8.         # 读取后台数据
    9.         with open('usrs_info.pickle', 'rb') as usr_file:
    10.             exist_usr_info = pickle.load(usr_file)
    11.         # 判断两次输入的密码是否一致
    12.         if np != npf:
    13.             tk.messagebox.showerror('错误', '密码和确认密码必须相同')
    14.         # 判断用户名是否已经注册
    15.         elif nn in exist_usr_info:
    16.             print('已经注册过了')
    17.             tk.messagebox.showerror('错误', '用户已注册')
    18.         # 注册成功,写入后台
    19.         else:
    20.             exist_usr_info[nn] = np
    21.             with open('usrs_info.pickle', 'wb') as usr_file:
    22.                 pickle.dump(exist_usr_info, usr_file)
    23.             tk.messagebox.showinfo('欢迎你', '您已成功注册!')
    24.             # 然后销毁窗口。
    25.             window_sign_up.destroy()
    26.     # 注册窗口
    27.     window_sign_up = tk.Toplevel(window)
    28.     window_sign_up.geometry('350x200')
    29.     window_sign_up.title('Sign up window')
    30.     tk.Label(window_sign_up, text='User name: ').place(x=10, y=10)  # 将`User name:`放置在坐标(10,10)。
    31.     tk.Label(window_sign_up, text='Password: ').place(x=10, y=50)
    32.     tk.Label(window_sign_up, text='Confirm password: ').place(x=10, y=90)
    33.     # 用户名输入框
    34.     new_name = tk.StringVar()  # 将输入的注册名赋值给变量
    35.     new_name.set(var_usr_name.get())  # 将最初显示定为example@python.com
    36.     entry_new_name = tk.Entry(window_sign_up, textvariable=new_name)  # 创建一个注册名的entry,变量为new_name
    37.     entry_new_name.place(x=150, y=10)  # entry放置在坐标(150,10).
    38.     # 密码输入框
    39.     new_pwd = tk.StringVar()
    40.     entry_usr_pwd = tk.Entry(window_sign_up, textvariable=new_pwd, show='*')
    41.     entry_usr_pwd.place(x=150, y=50)
    42.     # 确认密码输入框
    43.     new_pwd_confirm = tk.StringVar()
    44.     entry_usr_pwd_confirm = tk.Entry(window_sign_up, textvariable=new_pwd_confirm, show='*')
    45.     entry_usr_pwd_confirm.place(x=150, y=90)
    46.     # 注册按钮
    47.     btn_comfirm_sign_up = tk.Button(window_sign_up, text='Sign up', command=sign_up)
    48. btn_comfirm_sign_up.place(x=150, y=130)

    注册函数usr_sign_up包含了注册的逻辑,包括创建注册窗口、获取用户输入、验证输入信息,并将新用户信息保存到文件中。

    6.登录和注册按钮

    1. btn_login = tk.Button(window, text='Login', command=usr_login)
    2. btn_login.place(x=170, y=230)
    3. btn_sign_up = tk.Button(window, text='Sign up', command=usr_sign_up)
    4. btn_sign_up.place(x=270, y=230)

    创建登录和注册按钮,并将它们放置在窗口的指定位置。按钮的command属性绑定了相应的登录和注册函数。

    7.主事件循环

    window.mainloop()

    启动了Tkinter的主事件循环,这使得窗口保持打开状态,并能够响应用户的交互,如点击按钮、输入文本等。

    整个代码的结构是典型的GUI应用程序结构,包括窗口初始化、用户界面元素布局、事件处理函数定义和主事件循环启动。

  • 相关阅读:
    【Windows安装RabbitMQ详细教程】
    电子学:第014课——实验 15:防入侵报警器(第一部分)
    Redis:send of 37 bytes failed with errno=10054
    PyTorch的简介和安装
    SVG图形
    5分钟了解二叉树之LeetCode里的二叉树
    适配器模式
    IDEA+MapReduce+Hive综合实践——搜狗日志查询分析
    Java核心编程(15)
    Spring+Vue工程部署在Linux
  • 原文地址:https://blog.csdn.net/2303_77556681/article/details/137917977