利用Python中自带Tkinter模块创建一个用户登录界面(GUI)
2019-05-18 15:47
731 查看
版权声明:该文为本人原创文章,引用请注明出处,谢谢! https://blog.csdn.net/sunkuocsdn/article/details/90315660
第一次写博客,有点小紧张.......... 最近突然想学习一下Python的GUI框架,先从基础学起吧!Python有很多模块可以进行GUI编程,其中最简单的就是Tkinter模块了,而且该模块不需要进行安装,它是Python自带的模块,使用的时候直接import就OK! 这里强调一下,如果你使用的是python2的话,应该是import Tkinter,如果你使用的是python3的话,那么应该是import tkinter,注意不要搞错了! Tkinter模块一共就有十几种控件可以使用,所以说它学起来还是挺容易的,也就是因为很简单,所以它做出来的界面是比较粗糙的,但是对于平常自己做一些小东西啥的还是够用的,而且一般的大型开发也不会用到它。 关于Tkinter模块的教程网上一搜一大把,请各位朋友自己去找吧,我就不再赘述了,下面直接上代码!! 该代码实现的主要是用户的登陆功能和注册功能,登录过程还添加了对输入账号密码信息是否为空的检测,同样的,注册过程也添加了该检测。用户的账号密码信息是保存在一个创建好的字典里面的,然后将字典保存到指定文件中。 本人代码小白一枚,代码写的可能有点烂。。。。各位朋友如果有啥意见欢迎在评论区一起探讨!
# -*- coding: utf-8 -*- import tkinter as tk import tkinter.messagebox import pickle window = tk.Tk() # 创建根窗口 window.title('Welcome to Sunkuo Website') window.geometry('500x400') # 在根窗口上放置相应标签和Entry控件,并摆放好位置 tk.Label(window, text='欢迎!请输入您的账号密码!', font=('Arial', 20)).pack() tk.Label(window, text='通行证账号:', font=('Arial', 14)).place(x=50, y=100) tk.Label(window, text='密码:', font=('Arial', 14)).place(x=50, y=150) e_u = tk.Entry(window, show=None, font=('Arial', 12)) # 输入账号信息的Entry控件 e_u.place(x=200, y=105) e_p = tk.Entry(window, show='*', font=('Arial', 12)) # 输入密码信息的Entry控件 e_p.place(x=200, y=155) fr = open('userdate.txt', 'rb') # 以二进制方式打开一个文件(只读) user_info = pickle.load(fr) # 使用load()将数据从文件中序列化读出 fr.close() # 关闭文件 # 登录函数 def sign_in(): global user_p # fr = open('userdate.txt', 'rb') # user_info = pickle.load(fr) # fr.close() # 通行证账号判断 flag = 1 # 设定标志位(标志:输入通行证账号不能为空) if e_u.get() == '': # 判断用户是否输入通行证账号 flag = 0 tkinter.messagebox.showerror(title='抱歉!', message='输入通行证账号不能为空!') i = 0 flag_1 = 0 # 设定标志位(标志:是否从用户信息中遍历到用户所输入的通行证账号) for key in user_info: # 遍历用户信息 if (key == e_u.get()) & (flag == 1): # 若用户已经输入账号且从用户信息中遍历到账号 flag_1 = 1 user_p = user_info[key] # 将用户信息的账号所对应的密码提取出来 break i += 1 if (i == len(user_info)) & (flag == 1): # 若遍历结束后没有发现用户所输入账号,则输出通行证账号不存在 tkinter.messagebox.showerror(title='抱歉!', message='通行证账号不存在') # 密码判断 if flag_1 == 1: # 标志位判断(成立:已经遍历到账号信息,不成立:没有遍历到账号信息) if e_p.get() == '': # 判断用户所输入密码是否为空 tkinter.messagebox.showerror(title='抱歉!', message='输入密码不能为空!') elif user_p == e_p.get(): # 判断用户所输入密码与从用户信息文件中取出的密码是否相同 tkinter.messagebox.showinfo(title='恭喜您!', message='登陆成功!') window.quit() # 登陆成功,关闭根窗口 else: tkinter.messagebox.showwarning(title='抱歉', message='密码有误,请重新输入!') # 注册函数 def b_register(): def register(): # 通行证账号检测 flag_2 = 1 # 设定标志位(标志:用户输入的通行证账号是否为空) if e_register_u.get() == '': # 判断用户输入的通行证账号是否为空 flag_2 = 0 tkinter.messagebox.showerror(title='抱歉!', message='输入通行证账号不能为空!') flag_3 = 1 # 设定标志位(标志:用户输入的通行证账号是否已被注册) for key in user_info: # 遍历用户信息 if (key == e_register_u.get()) & (flag_2 == 1): # 若用户输入的通行证账号不为空,且遍历到的账号信息与输入的相同 flag_3 = 0 tkinter.messagebox.showerror(title='抱歉!', message='该通行证账号已注册!') #密码检测 flag_4 = 1 # 设定标志位(标志:用户输入密码是否为空) if (e_register_p.get() == '') & (flag_2 == 1): # 若用户输入的通行证账号不为空,且输入的密码为空 flag_4 = 0 tkinter.messagebox.showerror(title='抱歉!', message='输入密码不能为空!') if (e_register_p.get() != e_register_np.get()) & (flag_3 == 1): #判断两次密码输入是否一致 tkinter.messagebox.showwarning(title='抱歉', message='两次密码输入不一致,请重新输入!') # 两次密码输入一致,进行下面操作 if (e_register_p.get() == e_register_np.get()) & (flag_2 == 1) & (flag_3 == 1) & (flag_4 == 1): user_info[e_register_u.get()] = e_register_p.get() # 将输入的账号、密码存储在字典中 fw = open('userdate.txt', 'wb') # 以二进制方式打开一个文件(只写) pickle.dump(user_info, fw) # 使用dump()将数据序列化到文件中 fw.close() # 关闭文件 tkinter.messagebox.showinfo(title='恭喜您!', message='注册成功!') window_register.destroy() # 关闭注册窗口 window_register = tk.Toplevel(window) # 在根窗口上建立一个注册窗口 window_register.title('Register Window') window_register.geometry('400x300') # 在注册窗口上放置相应标签和Entry控件,并摆放好位置 tk.Label(window_register, text='通行证账号:', font=('Arial', 14)).place(x=25, y=50) tk.Label(window_register, text='密码:', font=('Arial', 14)).place(x=25, y=100) tk.Label(window_register, text='确认密码:', font=('Arial', 14)).place(x=25, y=160) e_register_u = tk.Entry(window_register, show=None, font=('Arial', 12)) # 输入注册账号信息的Entry控件 e_register_u.place(x=165, y=50) e_register_p = tk.Entry(window_register, show=None, font=('Arial', 12)) # 输入注册密码信息的Entry控件 e_register_p.place(x=165, y=100) e_register_np = tk.Entry(window_register, show=None, font=('Arial', 12)) # 第二次输入注册密码信息的Entry控件 e_register_np.place(x=165, y=160) # 在注册窗口上建立一个按键 b_sign_in_register = tk.Button(window_register, text='确认注册', font=('Arial', 14), command=register).place(x=180, y=220) # 在根窗口上建立两个按键 b_sign_in = tk.Button(window, text='登录', font=('Arial', 14), command=sign_in).place(x=190, y=220) b_register = tk.Button(window, text='注册', font=('Arial', 14), command=b_register).place(x=320, y=220) window.mainloop() # 主窗口循环显示
相关文章推荐
- python中tkinter模块创建用户登录窗口
- Python 3基础教程33-tkinter模块创建一个window窗体
- 如何利用Win32服务进程去创建一个GUI用户进程?
- 用 servlet 来创建一个用户登录界面
- Python中使用Tkinter模块创建GUI程序实例
- python的自带GUI模块Tkinter学习
- 一个项目学会python的tkinter模块---GUI设计
- [置顶] python 通过GUI:Tkinter编程建立一个登录数据库的案例
- python学习笔记:使用tkinter模块创建可视化界面,并将.py程序转化成.exe可执行文件
- Python中使用Tkinter模块创建GUI程序实例
- Java Web 开发利用Struts2+Spring+mybatis写一个用户登录界面以及简单的数据交互
- 利用python 下paramiko模块无密码登录
- Python学习之tkinter--登录系统界面篇
- Python GUI:高级作图tkinter模块的常用函数.md
- python3怎么自己创建一个模块并且调用(个人重新总结了下)
- python编写一个用户登录程序
- Python Tkinter模块 GUI 可视化
- 用python开发一个有趣的猜数字小游戏(实现简单的GUI界面学习)
- 利用系统自带脚本utlsampl.sql创建scott用户及样本数据
- 利用策略模式对用户模块的一个设计