游戏登录界面制作

登录界面制作

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

import subprocess

import tkinter as tk

import pickle

from tkinter import messagebox



window = tk.Tk()

window.title('Welcome')

window.geometry('450x300')

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

2.创建画布和图像

canvas = tk.Canvas(window, height=200, width=500)

image_file = tk.PhotoImage(file='welcome.gif')

image = canvas.create_image(0, 0, anchor='nw', image=image_file)

canvas.pack(side='top')

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

3. 用户信息输入

tk.Label(window, text='User name').place(x=50, y=150)

tk.Label(window, text='Password').place(x=50, y=190)



var_usr_name = tk.StringVar()

var_usr_name.set('example@python.com')

entry_usr_name = tk.Entry(window, textvariable=var_usr_name)

entry_usr_name.place(x=160, y=150)



var_usr_pwd = tk.StringVar()

entry_usr_pwd = tk.Entry(window, textvariable=var_usr_pwd, show='*')

entry_usr_pwd.place(x=160, y=190)

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

4.登录函数

def usr_login():

    usr_name = var_usr_name.get()

    usr_pwd = var_usr_pwd.get()

    print(usr_name)

    try:

        with open('usrs_info.pickle', 'rb') as usr_file:

            print('1')

            usrs_info = pickle.load(usr_file)

            print(usrs_info)

    except FileNotFoundError:

        with open('usrs_info.pickle', 'wb') as usr_file:

            print('2')

            usrs_info = {'admin': 'admin'}

            pickle.dump(usrs_info, usr_file)  # 序列化

    print('OK')

    print('usr_name:', usr_name)

    if usr_name in usrs_info:

        print('3')

        if usr_pwd == usrs_info[usr_name]:

            tk.messagebox.showinfo(title='Welcome', message='登陆成功!!用户命:' + usr_name)

            window.destroy()

            # import lx3

            subprocess.Popen(["python", "九宫格画布.py"])

        else:

            tk.messagebox.showerror(message='错误,密码错误,请重试.')

    else:

        print('4')

        is_sign_up = tk.messagebox.askyesno(title='Welcome', message='你还没有注册呢。今天就报名?')

        if is_sign_up:

            usr_sign_up()

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

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

5.注册函数

def usr_sign_up():

    print('开始注册')



    def sign_up():

        # 获取输入

        nn = new_name.get()

        np = new_pwd.get()

        npf = new_pwd_confirm.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:

            print('已经注册过了')

            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.geometry('350x200')

    window_sign_up.title('Sign up window')



    tk.Label(window_sign_up, text='User name: ').place(x=10, y=10)  # 将`User name:`放置在坐标(10,10)。

    tk.Label(window_sign_up, text='Password: ').place(x=10, y=50)

    tk.Label(window_sign_up, text='Confirm password: ').place(x=10, y=90)



    # 用户名输入框

    new_name = tk.StringVar()  # 将输入的注册名赋值给变量

    new_name.set(var_usr_name.get())  # 将最初显示定为example@python.com

    entry_new_name = tk.Entry(window_sign_up, textvariable=new_name)  # 创建一个注册名的entry,变量为new_name

    entry_new_name.place(x=150, y=10)  # entry放置在坐标(150,10).



    # 密码输入框

    new_pwd = tk.StringVar()

    entry_usr_pwd = tk.Entry(window_sign_up, textvariable=new_pwd, show='*')

    entry_usr_pwd.place(x=150, y=50)



    # 确认密码输入框

    new_pwd_confirm = tk.StringVar()

    entry_usr_pwd_confirm = tk.Entry(window_sign_up, textvariable=new_pwd_confirm, show='*')

    entry_usr_pwd_confirm.place(x=150, y=90)



    # 注册按钮

    btn_comfirm_sign_up = tk.Button(window_sign_up, text='Sign up', command=sign_up)

btn_comfirm_sign_up.place(x=150, y=130)

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

6.登录和注册按钮

btn_login = tk.Button(window, text='Login', command=usr_login)

btn_login.place(x=170, y=230)



btn_sign_up = tk.Button(window, text='Sign up', command=usr_sign_up)

btn_sign_up.place(x=270, y=230)

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

7.主事件循环

window.mainloop()

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/557189.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32完成软件I2C通讯

今天的重点是利用STM32的软件方案和MPU60506轴姿态传感器建立通讯,今天只完成了简单的发送地址和接收应答的部分,特此记录一下过程,以后忘记可以随时翻出来看看。 先介绍最基本的I2C通讯的最基本的6个时序: 一:起始条…

【Yolov系列】Yolov5学习(一)补充2:自适应锚框计算详解+代码注释

一、自适应锚框计算详解 自适应锚框计算的具体过程: ①获取数据集中所有目标的宽和高。 ②将每张图片中按照等比例缩放的方式到 resize 指定大小,这里保证宽高中的最大值符合指定大小。 ③将 bboxes 从相对坐标改成绝对坐标,这里…

预印本仓库ArXiv——防止论文录用前被别人剽窃

文章目录 一、什么是预印本二、什么是ArXiv2.1 ArXiv的领域2.2 如何使用 一、什么是预印本 预印本(Preprint)是指科研工作者的研究成果还未在正式出版物上发表,而出于和同行交流目的自愿先在学术会议上或通过互联网发布的科研论文、科技报告…

SQL Server 2022 安装及使用

SQL Server 2022 前言一、安装SQL Server 2022下载SQL Server 2022安装SQL Server 2022配置SQL Server 2022 二、安装SQL Server Management Studio下载SQL Server Management Studio安装SSMS-Setup-CHS 三、使用SQL Server 2022四、解决连接到服务器报错问题 前言 SQL Serve…

轻松get!分享4种关于iPhone通话记录怎么查询的方法

想要轻松了解你的iPhone通话记录?通话记录怎么查询?不用担心,我们在这篇文章中将分享四种简单有效的方法,帮助你查询iPhone上的通话记录。 无论是查看最近的通话记录还是检索特定日期范围内的通话历史,这些方法都能帮…

AI:162-如何使用Python进行图像识别与处理深度学习与卷积神经网络的应用

本文收录于专栏:精通AI实战千例专栏合集 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 每一个案例都附带关键代码,详细讲解供大家学习,希望可以帮到大家。正…

AI大模型日报#0418:Stable Diffusion 3开放API、Meta新研究让AI Agent理解物理世界

导读: 欢迎阅读《AI大模型日报》,内容基于Python爬虫和LLM自动生成。目前采用“文心一言”生成了每条资讯的摘要。标题: 微软刚发布了VASA-1 这个人工智能可以让单张图像具有生动的说话和歌唱能力 摘要: 微软发布了VASA-1人工智能,它能使单…

宿舍预付费管控云平台

1.宿舍预付费管控云平台概述 宿舍预付费管控云平台是一种创新的智能管理系统,专为学校、公寓等住宿环境设计,旨在提升管理效率,优化用户体验,并实现资源的高效利用。通过云端技术,该平台可以实现远程充值、实时消费记…

跨平台SIP 客户端-linphone下载、使用、开启视频H264

linphone 介绍 Linphone 是一种开源的语音和视频通信应用程序,它提供了基于互联网协议(IP)的实时通信功能。用于语音/视频通话、即时消息和电话会议的开源 SIP 电话。它适用于移动和桌面环境(iOS、Android、GNU/Linux、macOS、Win…

【UE 材质】雨滴效果

在上一篇博客(【UE 材质】表面湿润效果)的基础上继续实现物体表面附加雨滴的效果 效果 步骤 1. 下载所需纹理 2. 创建一个材质并打开,添加如下节点,我们将纹理的RG通道输出的值和1组成一个三维向量,作为基本的法线效…

基于Bpmnjs适配Flowable的流程设计器

Flowable在7.x的版本就不提供流程设计器UI,为了广大流程爱好者能更好的使用Flowable,开发了一套完全适配Flowable的bpmnjs的流程设计流程设计器 支持开始事件支持结束事件支持边界事件支持中间事件支持网关事件支持子流程支持泳道泳池扩展微服务组件扩展…

C语言中的控制语句(分支语句 if、switch、三目运算符)

程序执行的三大流程 顺序 : 从上向下, 顺序执行代码分支 : 根据条件判断, 决定执行代码的分支循环 : 让特定代码重复的执行 分支语句 条件语句用来根据不同的条件来执行不同的语句,C语言中常用的条件语句包括if语句和switch语句。 if 语句…

lua 环境安装

下载地址: https://luabinaries.sourceforge.net/download.html 安装环境变量 检查一下是否安装成功,有版本号,打印一句话,如下表示成功 idea 安装插件,方便编写lua脚本 配置一下idea 运行测试 local function m…

python处理IP对应城市省份

python处理IP对应城市省份 IP地理地址库geoip2用法 数据包下载 数据包下载地址(需要注册) https://www.maxmind.com/en/accounts/258630/geoip/downloads 考虑到注册麻烦,可以到下面这个github的链接去直接下载 https://github.com/Hackl0…

LINUX网卡一般性问题分析

一、网卡相关概念 网卡:网卡是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件。 网络模型:OSI网络模型、TCP/IP网络模型 LINUX网络收发流程: 1. 内核分配一个主内存地址段(DMA缓冲区),网卡设备可以在…

混合云自动化优势有哪些?

随着云计算领域变得更加动态,全球各地的组织都开始将混合云作为其IT基础设施效率、灵活性、安全性、可扩展性和成本效益的支柱。混合云将本地数据中心与公有云结合起来,为企业提供了灵活性和可扩展性,同时又能满足其对安全性、合规性和控制力…

整除分块(上下取整)

参考: 整除分块 - 知乎 董晓算法 G33 整除分块(数论分块) 图都是摘的上面的。 整除分块 整除分块是数论中的一个知识点。一个整除式子在分母不固定的时候,得到的结果也有可能不同,但是因为是整除,所以…

登录解析(前端)

登录代码 1、登录之后做了什么? 执行登陆方法,成功之后,路由跳转到指定路径或者根目录 2、this.$store.dispatch是什么意思? this.$store.dispatch(‘Login’, this.loginForm) 来调取store里的user.js的login方法3、this.$r…

【学习】自动化测试有哪些优势和不足

在当今这个数字化时代,软件测试已经成为了任何一款产品成功的关键因素之一。而在诸多的测试方法中,自动化测试凭借着其独特的魅力吸引着越来越多的企业。今天就让我们一起走进自动化测试的世界,探讨它的优势与不足。 一、自动化测试优势 1.…

强化学习入门之MDP

系列文章目录 第一章 强化学习入门之基本概念 第二章 强化学习入门之MDP 强化学习入门之MDP 系列文章目录前言1. 简介1.1 状态值函数1.2 状态动作值函数1.3 策略 2. 最优策略求解2.1 思想2.2 策略评估2.3 策略改进 3. 最优值函数求解 前言 我们已经知道使用MDP来对强化学习进…