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

youtube python enty_python GUI尝鲜(但当涉猎,见往事耳)

from tkinter importmessageboximporttkinter as tkfrom tkinter import *

importpickle

window= tk.Tk() #窗口obj对象

window.title('Hello GTB') #窗口名字

window.geometry('450x300') #窗口宽度和高度

#welcome message

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

image_file= PhotoImage(file='C:\\Users\\mu\\Desktop\\welcome.gif')

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

canvas.pack(side='top')

var_user_name=tk.StringVar()

var_user_name.set('guotianbao@gmail.com')

var_password=tk.StringVar()#userinfo

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

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

entry_user_name= tk.Entry(window,textvariable=var_user_name)

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

entry_password= tk.Entry(window,textvariable=var_password,show='*')

entry_password.place(x=160,y=190)#login and sign up

defuser_login():

user_name=var_user_name.get()

user_password=var_password.get()try:

with open('C:\\Users\\mu\\PycharmProjects\\mycrm\\app01\\user_info.txt','rb') as user_file:

user_info=pickle.load(user_file)exceptFileNotFoundError:

with open('user_info.txt', 'ab+') as user_file:

user_info= {'admin':'admin'}

pickle.dump(user_info,user_file)if user_name inuser_info:if user_password ==user_info[user_name]:

messagebox.showinfo(title='Welcome',message='How are you'+user_name)else:

messagebox.showerror(title='Hi man',message= 'Your password is wrong, try again.')else:

is_sign_up= messagebox.askyesno('Welcome','You have not sign up yet. Sign up now ?')ifis_sign_up:

user_sign()defuser_sign():defsign_last():

np= new_pwd.get() #注册密码

npf = new_pwd_confirm.get() #确认密码

nn = new_name.get() #注册的名字

with open('C:\\Users\\mu\\PycharmProjects\\mycrm\\app01\\user_info.txt','rb') as usr_file :

exist_usr_info=pickle.load(usr_file)if np !=npf:

tk.messagebox.showerror('Error', 'Password and confirm password must be the same!')elif nn inexist_usr_info:

tk.messagebox.showerror('Error', 'The user has already signed up!')else:

exist_usr_info[nn]=np

with open('usrs_info.txt', 'ab+') as usr_file:

pickle.dump(exist_usr_info, usr_file)

tk.messagebox.showinfo('Welcome', 'You have successfully signed up!')

window_sign_up.destroy()

window_sign_up=tk.Toplevel()

window_sign_up.title('Sign up window')

window_sign_up.geometry('350x200')

new_name=tk.StringVar()

new_name.set('example@gmail.com')

tk.Label(window_sign_up,text='User name:').place(x=10,y=10)

entry_new_name= tk.Entry(window_sign_up,textvariable=new_name)

entry_new_name.place(x=150,y=10)

new_pwd=tk.StringVar()

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

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

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

new_pwd_confirm=tk.StringVar()

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

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

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

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

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

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

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

btn_login= tk.Button(window,text='Sign up',command=user_sign)

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

window.mainloop()#不断的循环循环窗口,保证我们点击窗口后,可以及时执行命令

相关文章:

  • Windows Mobile下在开始菜单增加应用程序快捷方式的两种办法
  • solidworks版本转换器_SOLIDWORKS | SOLIDWORKS? 2021 新增功能 —3D CAD
  • DeepEarth中的几何图形基础框架模型
  • C/C++ 宏带来的奇技淫巧
  • vim 全局替换_推荐一些VIM操作技巧
  • zookeeper 分布式锁_zookeeper分布式锁最完美实现Curator剖析
  • 南昌
  • 思科wlc产品文档_基于Catalyst 9800 无线控制器的思科OEAP远程办公解决方案
  • 留记
  • ubuntu golang指定glibc版本_Go Lang 开发笔记《使用 Go Lang 搭建一个 Web 服务!》
  • 装机后进不了bios_是生产力也是游戏主力,12.7升A4风冷小钢炮装机体验
  • 差了点什么呢?
  • 黑盒测试和白盒测试_黑盒测试是什么及其测试方法
  • kmem 反编译linux内核_Linux 内核 VS 内存碎片 (上)
  • 总有一些人可以超越死亡——leo荐书(5)
  • 【知识碎片】第三方登录弹窗效果
  • interface和setter,getter
  • javascript 哈希表
  • Javascript 原型链
  • Java知识点总结(JavaIO-打印流)
  • Python语法速览与机器学习开发环境搭建
  • React Transition Group -- Transition 组件
  • Swoft 源码剖析 - 代码自动更新机制
  • vue 配置sass、scss全局变量
  • 浮现式设计
  • 官方解决所有 npm 全局安装权限问题
  • 小程序 setData 学问多
  • 以太坊客户端Geth命令参数详解
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • ![CDATA[ ]] 是什么东东
  • # 安徽锐锋科技IDMS系统简介
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • $L^p$ 调和函数恒为零
  • (2020)Java后端开发----(面试题和笔试题)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (附源码)ssm码农论坛 毕业设计 231126
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (一)u-boot-nand.bin的下载
  • (一一四)第九章编程练习
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (原創) 物件導向與老子思想 (OO)
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .Net 6.0 处理跨域的方式
  • .Net6 Api Swagger配置
  • .NET的微型Web框架 Nancy
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • @RequestBody与@ModelAttribute
  • @我的前任是个极品 微博分析
  • [ 手记 ] 关于tomcat开机启动设置问题