Python tkinter库实现登录注册基本功能
作者:破壁人x
tkinter库作为python的标准库之一,它的功能性十分强大,下面我将使用tkinter库制作一个简易的注册登录窗口(很难看就是了)。
一、各种组件的布局
制作之前需要大致明白各个窗体的大致位置,登录注册嘛 自然就要有用户名和密码的标签以及需要输入文字的文本框。
'创建用户名的标签' Label(root,text='用户名',width = 6,font=('华文行楷',20)).place(x=1,y=1) '用户名后面的输入框' user = Entry(root,width=20,textvariable = user1).place(x=100,y=1) '创建密码的标签' Label(root,text = '密码',width = 6,font=('华文行楷',20)).place(x=1,y=45) '密码后面的输入框' password = Entry(root,width =20,textvariable = password1 ).place(x=100,y=45) '创建两个按钮 用command参数使得在点击按钮时运行对应的函数' Button(root,text = '登录',width = 8,command= login).place(x=40,y=100) Button(root,text = '注册',width = 8,command=zhuce).place(x=110,y=100)
在这个基础上我还加了登录 注册两个按钮 用于后面的登录注册的操作
二、制作过程中的理解
如果想要做到登录注册的操作,首先需要有一个储存用户名和密码的东西,登录时输入的文本如果在这个东西里面说明用户名密码都正确 就能完成登录,注册时输入的文本也能够储存在里面,要做到这些,字典是个不二选择,因为它有着‘键值:内容’的结构,非常适合储存用户名和密码
users_pw = {'admin':'123456'} #一个空字典 默认用户名密码为admin 123456
创建一个空字典,我们可以设置一组数据作为默认用户名密码。
创建了一个储存数据 的字典还不够,我们要做到登录注册的效果还需要’登录‘,’注册‘这两个按钮的作用,当我们点击注册按钮时,程序会捕捉到这个操作,并且执行相应的操作。
'鼠标点击登录时会执行的操作' def login(): if users in users_pw : if passwords == users_pw[users]: print('登录成功') else: print('登录失败') else: print('没有该用户')
Button(root,text = '登录',width = 8,command= login).place(x=40,y=100) Button(root,text = '注册',width = 8,command=zhuce).place(x=110,y=100)
注册同理 当然这段代码是执行不了的只是提供个思路 具体后面会说 通过按钮Button方法中的command参数我们就可以在点击按钮时调用我们事先写好的函数。
三、制作过程中遇到的难点
在制作过程中遇到过一些难题,比如如何获取文本框中用户输入的东西。
四、解决问题的方法
我查阅了很多资料,终于找到了方法,就是在Entry控件中的textvariable参数 它可以把这个输入框对象的某个属性绑定给一个变量 然后通过<变量>.StringVar() 方法获取输入框中的内容。
users = user1.get() #获取user1中存储的文本框中的内容 user = Entry(root,width=20,textvariable = user1).place(x=100,y=1) #textvariable参数的使用是把文本框中的内容传递给变量的关键
这个难题解决后,之后的工作也就简单了,只需要把每个控件的位置,参数调整一下就可以了。
完整代码以及运行结果如下:
#place布局.py from tkinter import * #导入tkinter库 users_pw = {'admin':'123456'} #一个空字典 默认用户名密码为admin 123456 '点击登录按钮执行的函数' def login(): def close(): window.destroy() users = user1.get() passwords = password1.get() if users in users_pw : if passwords == users_pw[users]: window = Tk() window.title ('恭喜!') window.geometry('200x180+200+200') label = Label(window,text = '登录成功',font=('华文行楷',20)) label.pack() button = Button(window,text ='关闭',font=('华文行楷',20),command=close) button.pack() else: window = Tk() window.title('错误!') window.geometry('200x180+200+200') label = Label(window,text='登录失败',font=('华文行楷',20)) label.pack() button = Button(window,text='关闭',font=('华文行楷',20), command=close) button.pack() else: print('没有该用户') '点击注册按钮执行的函数' def zhuce(): def close(): window.destroy() users = user1.get() #获取user1中存储的文本框中的内容 passwords = password1.get() #同上 if (users =='') or (passwords == ''): window = Tk() window.title('错误!') window.geometry('200x180+200+200') label = Label(window, text='注册失败', font=('华文行楷', 20)) label.pack() button = Button(window, text='关闭', font=('华文行楷', 20), command=close) button.pack() elif users in users_pw: window = Tk() window.title('错误!') window.geometry('200x180+200+200') label = Label(window, text='注册失败已有此用户名', font=('华文行楷', 20)) label.pack() button = Button(window, text='关闭', font=('华文行楷', 20), command=close) button.pack() else: users_pw[users] = passwords window = Tk() window.title('恭喜!') window.geometry('200x180+200+200') label = Label(window, text='注册成功', font=('华文行楷', 20)) label.pack() button = Button(window, text='关闭', font=('华文行楷', 20), command=close) button.pack() '窗口创建' root = Tk() root.title('登录') root.geometry('300x300') root.config(bg = '#ffcc00') '创建两个文本输入框 并用StringVar()把文本框中的内容跟user1 password1绑定' user1 = StringVar () password1 =StringVar() Label(root,text='用户名',width = 6,font=('华文行楷',20)).place(x=1,y=1) user = Entry(root,width=20,textvariable = user1).place(x=100,y=1) #textvariable参数的使用是把文本框中的内容传递给变量的关键 Label(root,text = '密码',width = 6,font=('华文行楷',20)).place(x=1,y=45) password = Entry(root,width =20,textvariable = password1 ).place(x=100,y=45) '创建两个按钮 用command参数使得在点击按钮时运行对应的函数' Button(root,text = '登录',width = 8,command= login).place(x=40,y=100) Button(root,text = '注册',width = 8,command=zhuce).place(x=110,y=100) root.mainloop() #显示窗口
到此这篇关于Python tkinter库实现登录注册基本功能的文章就介绍到这了,更多相关Python tkinter登录注册内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!