用tkinter库制作一个简单的登录注册小程序

目录

  1. 各种组件的布局
  2. 制作过程中的理解
  3. 制作过程中遇到的难点
  4. 解决问题的方法

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()  #显示窗口

 

 

 

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
下面是一个使用Tkinter编写的简单登录界面的示例: ```python import tkinter as tk from tkinter import messagebox def login(): username = username_entry.get() password = password_entry.get() if username == "admin" and password == "password": messagebox.showinfo("Login", "Login Successful!") else: messagebox.showerror("Login", "Invalid username or password.") root = tk.Tk() root.title("Login") # 创建标签 username_label = tk.Label(root, text="Username:") username_label.pack() # 创建用户名输入框 username_entry = tk.Entry(root) username_entry.pack() # 创建标签 password_label = tk.Label(root, text="Password:") password_label.pack() # 创建密码输入框 password_entry = tk.Entry(root, show="*") password_entry.pack() # 创建登录按钮 login_button = tk.Button(root, text="Login", command=login) login_button.pack() root.mainloop() ``` 在上面的示例中,我们首先导入`tkinter`和`messagebox`模块。然后,我们创建一个名为`login`的函数,用于处理登录逻辑。在`login`函数中,我们获取输入的用户名和密码,并通过简单的条件判断来判断登录是否成功。 接下来,我们创建`Tk`对象作为主窗口,并设置窗口标题为"Login"。 然后,我们创建标签、用户名输入框、密码标签、密码输入框和登录按钮,并使用`pack()`方法将它们放置在主窗口中。 最后,我们调用`root.mainloop()`启动Tk事件循环,使窗口保持可见并响应用户操作。 请注意,这只是一个简单的示例,没有实际的用户验证和安全性措施。在实际应用中,您应该使用更强大的身份验证机制来保护用户信息。 希望这对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冲鸭嘟嘟可

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值