学会python——用python制作一个登录和注册窗口(python实例十八)
目录
1.认识Python
2.环境与工具
2.1 python环境
2.2 Visual Studio Code编译
3.登录和注册窗口
3.1 代码构思
3.2 代码实例
3.3 运行结果
4.总结
1.认识Python
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字或标点符号,它具有比其他语言更有特色的语法结构。
2.环境与工具
2.1 python环境
在Windows上使用命令行窗口查看所安装的python版本
python --version
2.2 Visual Studio Code编译
Visual Studio Code是一款由微软开发且跨平台的免费源代码编辑器。该软件以扩展的方式支持语法高亮、代码自动补全、代码重构功能,并且内置了命令行工具和Git 版本控制系统。
3.登录和注册窗口
3.1 代码构思
通过定义五个函数,实现对磁盘文件的读和写、用户登录判断、注册信息判断、保存以及注册窗口界面的生成。
3.2 代码实例
import tkinter as tk
from tkinter import messagebox
import pickle
import os# 用pickle模块将字典变量进行序列转换并写入文件
def write_file(path, dic):with open(path, 'wb') as f:pickle.dump(dic, f)def read_file(path):with open(path, 'rb') as f:dic = pickle.load(f)return dic# 判断用户登录时录入的信息是否正确
def login():if os.path.exists('name.pickle'):userinfo = read_file('name.pickle')else:userinfo = {}name = txt_name.get()passwd = txt_passwd.get()if name in userinfo.keys():if userinfo[name] == passwd:messagebox.showinfo('登录成功', '欢迎您,' + name)else:messagebox.showerror('登录失败', '密码错误')txt_name.set('')txt_passwd.set('')e_name.focus()else:messagebox.showerror('登录失败', '用户名不存在')# 实现用户注册功能
def reg(regwin, path, name, passwd, passwd2):if passwd != passwd2:messagebox.showerror('注册失败', '两次输入的密码不一致')returnif os.path.exists(path):userinfo = read_file(path)else:userinfo = {}if name in userinfo.keys():messagebox.showerror('注册失败', '用户名已存在')returnelse:userinfo.update({name: passwd})write_file(path, userinfo)messagebox.showinfo('注册成功', '欢迎您,' + name)regwin.destroy()# 生成一个注册窗口界面
def create_regwindow():regwin = tk.Toplevel(win)regwin.title('注册')regwin.geometry('300x250')lb_name = tk.Label(regwin, text='用户名', bg='gainsboro', font=('arial', 12), height=1, width=10)lb_name.place(x=50, y=50)lb_passwd = tk.Label(regwin, text='密码', bg='gainsboro', font=('arial', 12), height=1, width=10)lb_passwd.place(x=50, y=100)lb_passwd2 = tk.Label(regwin, text='确认密码', bg='gainsboro', font=('arial', 12), height=1, width=10)lb_passwd2.place(x=50, y=150)txt_name = tk.StringVar()e_name = tk.Entry(regwin, textvariable=txt_name, font=('arial', 12), width=15)e_name.place(x=150, y=50, anchor='nw')txt_passwd = tk.StringVar()e_passwd = tk.Entry(regwin, textvariable=txt_passwd, font=('arial', 12), show='*')e_passwd.place(x=150, y=100, anchor='nw')txt_passwd2 = tk.StringVar()e_passwd2 = tk.Entry(regwin, textvariable=txt_passwd2, font=('arial', 12), show='*')e_passwd2.place(x=150, y=150, anchor='nw')# 生成一个注册按钮btn_reg = tk.Button(regwin, text='注册', bg='gainsboro', font=('arial', 12), height=1, width=10, command=lambda: reg(regwin, './part4/name.pickle', txt_name.get(), txt_passwd.get(), txt_passwd2.get()))btn_reg.place(x=100, y=200, anchor='nw')if __name__ == '__main__':win = tk.Tk()win.title('登录')win.geometry('300x200')win['background'] = 'gainsboro'lb_name = tk.Label(win, text='用户名', bg='gainsboro', font=('arial', 12), height=1, width=10)lb_name.place(x=50, y=50, anchor='nw')lb_passwd = tk.Label(win, text='密码', bg='gainsboro', font=('arial', 12), height=1, width=10)lb_passwd.place(x=50, y=100, anchor='nw')txt_name = tk.StringVar()e_name = tk.Entry(win, textvariable=txt_name, font=('arial', 12), width=15)e_name.place(x=150, y=50, anchor='nw')txt_passwd = tk.StringVar()e_passwd = tk.Entry(win, textvariable=txt_passwd, font=('arial', 12), show='*')e_passwd.place(x=150, y=100, anchor='nw')btn_log = tk.Button(win, text='登录', bg='gainsboro', font=('arial', 12), height=1, width=10, command=login)btn_log.place(x=50, y=150, anchor='nw')btn_reg = tk.Button(win, text='注册', bg='gainsboro', font=('arial', 12), height=1, width=10, command=create_regwindow)btn_reg.place(x=150, y=150, anchor='nw')win.mainloop()
3.3 运行结果
登录
注册(以用户名111,密码111为例)
登录成功
4.总结
通过定义函数实现可视化界面,通过利用python库实现信息的交互。
相关文章:

学会python——用python制作一个登录和注册窗口(python实例十八)
目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3.登录和注册窗口 3.1 代码构思 3.2 代码实例 3.3 运行结果 4.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读…...
Vue3+Element-plus的表单重置
作用:简化代码,重置表单数据 1.创建表单,绑定表单数据对象model,并且每一表单需要绑定prop <el-button type"primary" click"Formreset">重置</el-button> <el-form :inline"true" :model"fromModel" ref"form&q…...

pytorch中的contiguous()
官方文档:https://pytorch.org/docs/stable/generated/torch.Tensor.contiguous.html 其描述contiguous为: Returns a contiguous in memory tensor containing the same data as self tensor. If self tensor is already in the specified memory forma…...

Windows系统安装分布式搜索和分析引擎Elasticsearch与远程访问详细教程
文章目录 前言系统环境1. Windows 安装Elasticsearch2. 本地访问Elasticsearch3. Windows 安装 Cpolar4. 创建Elasticsearch公网访问地址5. 远程访问Elasticsearch6. 设置固定二级子域名 前言 本文主要介绍如何在Windows系统安装分布式搜索和分析引擎Elasticsearch,…...

界面材料知识
界面材料是用于填充芯片和散热器之间的空隙,将低导热系数的空气挤出,换成较高导热系数的材料,以提高芯片散热能力。参考下图 图片来源网上 热阻是衡量界面材料性能最终的参数,其中与热阻有关的有: 1、导热系数&#x…...
【Git】远程仓库操作
创建远程仓库 在官网进行注册登录:Gitee或Github 进入后点击新建仓库,默认选项创建即可 **仓库创建完成后可以看到SSH的仓库地址:gitgitee.com:username/test.git**或gitgithub.com:Toukensan/test.git 配置SSH公钥 在本地通过命令行创建…...

clonezilla(再生龙)克隆物理机linux系统,然后再去另一台电脑安装
前言: 总共需要2个u盘,一个装再生龙系统,一个是使用再生龙把硬盘备份到另一个盘里面,恢复的时候,先使用再生龙引导,然后再插上盘进行复制 1.制作启动u盘 1.1下载再生龙Clonezilla 下載 1.2下载UltraISO(https://cn.ultraiso.net/uiso9_cn.exe) 1.3 打开UltraISO,选择co…...

短视频电商源码的优势及软件架构解析
短视频电商源码是目前电商行业中非常火热的一个新兴领域,它通过短视频内容和电商商品的结合,为用户提供了一种新的购物体验。下面将介绍短视频电商源码的优势以及软件架构。 首先,短视频电商源码具有以下几个优势: 1、创新的购物体…...

Git使用[推送大于100M的文件后解救办法]
推送大于100M的文件后解救办法 本文摘录于:https://blog.csdn.net/u012150602/article/details/122687435只是做学习备份之用,绝无抄袭之意,有疑惑请联系本人! 当有文件大于100M的时候在提交的时候没有问题,但是在push的似乎就不行…...
RClone挂载有阿里云的AList
转自个人博客:https://www.jjy2023.cn/2024/05/23/rclone%e6%8c%82%e8%bd%bd%e6%9c%89%e9%98%bf%e9%87%8c%e4%ba%91%e7%9a%84alist-md/ RClone挂载一般的AList可以直接使用mount命令,但是阿里云需要使用指定头部Referer:https://www.aliyundrive.com/ &a…...
[ruby on rails]rails6.0升级6.1
1.准备工作 在开始升级过程之前,我们有一些建议的准备工作。 升级的时候,最好一个版本一个版本升级,比如6.0到6.1再到7.0,不要一次从6.0到7.0至少80%的测试覆盖率,测试真的很重要,能确保升级快速完成。本…...
大模型日报 2024-07-04
大模型日报 2024-07-04 一、大模型资讯 大厂高管转战 AI 创业盘点:超 25 人,覆盖全产业链,AI 应用最热门 涉及多家互联网大厂高管加入生成式 AI 创业,涵盖多个领域及融资情况。 腾讯云发布自研大数据高性能计算引擎 Meson 软硬一体…...
技术成神之路:设计模式(一)单例模式
在软件设计中,有时我们希望某个类的实例始终是唯一的,即无论在何处访问这个类,都能够得到同一个实例。单例模式(Singleton Pattern)就是为了解决这个问题而产生的。单例模式确保一个类只有一个实例,并提供一…...

四、(3)补充beautifulsoup、re正则表达式、标签解析
四、(3)补充beautifulsoup、re正则表达式、标签解析 beautifulsoupre正则表达式正则提取标签解析 beautifulsoup 补充关于解析的知识 还需要看爬虫课件 如何定位文本或者标签,是整个爬虫中非常重要的能力 无论find_all(ÿ…...

Vscode快捷键崩溃
Vscode快捷键崩溃 Linux虚拟机下使用vscode写代码【ctrlA,CtrlC,CtrlV】等快捷键都不能使用,还会出现“NO text insert“等抽象的指令,问题就是不知道什么时候装了一个VIM插件,让他滚出电脑》》》...
Spring Boot中的开发工具与插件推荐
Spring Boot中的开发工具与插件推荐 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们来聊聊Spring Boot中的开发工具与插件推荐。Spring Boot作为一种简…...

qt6 获取百度地图(一)
需求分析: 要获取一个地图, 需要ip 需要根据ip查询经纬度 根据经纬度查询地图 另外一条线是根据输入的地址 查询ip 根据查询到的ip查地图‘ 最后,要渲染地图 上面这这些动作,要进行http查询: 为此要有三个QNet…...
overlap的uORF对TE的抑制程度为什么显著高于non-overlap的uORF
在翻译调控中,上游开放阅读框(uORFs)对主开放阅读框(main ORF)的抑制效果有很大差异,尤其是重叠的uORFs(overlap uORFs)通常比非重叠的uORFs(non-overlap uORFsÿ…...

面向高精度导航定位领域的UM980RTK定位模块
UM980 是和芯星通自主研发的新一代 BDS/GPS/GLONASS/Galileo/QZSS 全系统全频高精度 RTK 定位模块,基于和芯星通自主研发的新一代射频基带及高精度算法一体化GNSS SoC 芯片—NebulasIV 设计。可同时跟踪 BDS, GPS, GLONASS, Galileo, QZSS, NavIC, SBAS, L-Band* 等…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...