当前位置: 首页 > news >正文

学会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()

官方文档&#xff1a;https://pytorch.org/docs/stable/generated/torch.Tensor.contiguous.html 其描述contiguous为&#xff1a; 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&#xff0c…...

深入理解计算机系统 CSAPP 家庭作业8.26

...

界面材料知识

界面材料是用于填充芯片和散热器之间的空隙&#xff0c;将低导热系数的空气挤出&#xff0c;换成较高导热系数的材料&#xff0c;以提高芯片散热能力。参考下图 图片来源网上 热阻是衡量界面材料性能最终的参数&#xff0c;其中与热阻有关的有&#xff1a; 1、导热系数&#x…...

【Git】远程仓库操作

创建远程仓库 在官网进行注册登录&#xff1a;Gitee或Github 进入后点击新建仓库&#xff0c;默认选项创建即可 **仓库创建完成后可以看到SSH的仓库地址&#xff1a;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…...

短视频电商源码的优势及软件架构解析

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

Git使用[推送大于100M的文件后解救办法]

推送大于100M的文件后解救办法 本文摘录于&#xff1a;https://blog.csdn.net/u012150602/article/details/122687435只是做学习备份之用&#xff0c;绝无抄袭之意&#xff0c;有疑惑请联系本人&#xff01; 当有文件大于100M的时候在提交的时候没有问题,但是在push的似乎就不行…...

RClone挂载有阿里云的AList

转自个人博客&#xff1a;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命令&#xff0c;但是阿里云需要使用指定头部Referer:https://www.aliyundrive.com/ &a…...

[ruby on rails]rails6.0升级6.1

1.准备工作 在开始升级过程之前&#xff0c;我们有一些建议的准备工作。 升级的时候&#xff0c;最好一个版本一个版本升级&#xff0c;比如6.0到6.1再到7.0&#xff0c;不要一次从6.0到7.0至少80%的测试覆盖率&#xff0c;测试真的很重要&#xff0c;能确保升级快速完成。本…...

大模型日报 2024-07-04

大模型日报 2024-07-04 一、大模型资讯 大厂高管转战 AI 创业盘点&#xff1a;超 25 人&#xff0c;覆盖全产业链&#xff0c;AI 应用最热门 涉及多家互联网大厂高管加入生成式 AI 创业&#xff0c;涵盖多个领域及融资情况。 腾讯云发布自研大数据高性能计算引擎 Meson 软硬一体…...

技术成神之路:设计模式(一)单例模式

在软件设计中&#xff0c;有时我们希望某个类的实例始终是唯一的&#xff0c;即无论在何处访问这个类&#xff0c;都能够得到同一个实例。单例模式&#xff08;Singleton Pattern&#xff09;就是为了解决这个问题而产生的。单例模式确保一个类只有一个实例&#xff0c;并提供一…...

四、(3)补充beautifulsoup、re正则表达式、标签解析

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

Vscode快捷键崩溃

Vscode快捷键崩溃 Linux虚拟机下使用vscode写代码【ctrlA&#xff0c;CtrlC&#xff0c;CtrlV】等快捷键都不能使用&#xff0c;还会出现“NO text insert“等抽象的指令&#xff0c;问题就是不知道什么时候装了一个VIM插件&#xff0c;让他滚出电脑》》》...

Spring Boot中的开发工具与插件推荐

Spring Boot中的开发工具与插件推荐 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们来聊聊Spring Boot中的开发工具与插件推荐。Spring Boot作为一种简…...

qt6 获取百度地图(一)

需求分析&#xff1a; 要获取一个地图&#xff0c; 需要ip 需要根据ip查询经纬度 根据经纬度查询地图 另外一条线是根据输入的地址 查询ip 根据查询到的ip查地图‘ 最后&#xff0c;要渲染地图 上面这这些动作&#xff0c;要进行http查询&#xff1a; 为此要有三个QNet…...

overlap的uORF对TE的抑制程度为什么显著高于non-overlap的uORF

在翻译调控中&#xff0c;上游开放阅读框&#xff08;uORFs&#xff09;对主开放阅读框&#xff08;main ORF&#xff09;的抑制效果有很大差异&#xff0c;尤其是重叠的uORFs&#xff08;overlap uORFs&#xff09;通常比非重叠的uORFs&#xff08;non-overlap uORFs&#xff…...

面向高精度导航定位领域的UM980RTK定位模块

UM980 是和芯星通自主研发的新一代 BDS/GPS/GLONASS/Galileo/QZSS 全系统全频高精度 RTK 定位模块&#xff0c;基于和芯星通自主研发的新一代射频基带及高精度算法一体化GNSS SoC 芯片—NebulasIV 设计。可同时跟踪 BDS, GPS, GLONASS, Galileo, QZSS, NavIC, SBAS, L-Band* 等…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

Redis上篇--知识点总结

Redis上篇–解析 本文大部分知识整理自网上&#xff0c;在正文结束后都会附上参考地址。如果想要深入或者详细学习可以通过文末链接跳转学习。 1. 基本介绍 Redis 是一个开源的、高性能的 内存键值数据库&#xff0c;Redis 的键值对中的 key 就是字符串对象&#xff0c;而 val…...

Electron简介(附电子书学习资料)

一、什么是Electron&#xff1f; Electron 是一个由 GitHub 开发的 开源框架&#xff0c;允许开发者使用 Web技术&#xff08;HTML、CSS、JavaScript&#xff09; 构建跨平台的桌面应用程序&#xff08;Windows、macOS、Linux&#xff09;。它将 Chromium浏览器内核 和 Node.j…...

docker容器互联

1.docker可以通过网路访问 2.docker允许映射容器内应用的服务端口到本地宿主主机 3.互联机制实现多个容器间通过容器名来快速访问 一 、端口映射实现容器访问 1.从外部访问容器应用 我们先把之前的删掉吧&#xff08;如果不删的话&#xff0c;容器就提不起来&#xff0c;因…...

Ubuntu 安装 Mysql 数据库

首先更新apt-get工具&#xff0c;执行命令如下&#xff1a; apt-get upgrade安装Mysql&#xff0c;执行如下命令&#xff1a; apt-get install mysql-server 开启Mysql 服务&#xff0c;执行命令如下&#xff1a; service mysql start并确认是否成功开启mysql,执行命令如下&am…...

【Linux应用】Linux系统日志上报服务,以及thttpd的配置、发送函数

【Linux应用】Linux系统日志上报服务&#xff0c;以及thttpd的配置、发送函数 文章目录 thttpd服务安装thttpd配置thttpd服务thttpd函数日志效果和文件附录&#xff1a;开发板快速上手&#xff1a;镜像烧录、串口shell、外设挂载、WiFi配置、SSH连接、文件交互&#xff08;RADX…...