Python tkinter库实现登录注册基本功能

咖啡半糖
咖啡半糖
发布时间:2026-10-16| 5人浏览过
原创

本文介绍如何使用Python标准库tkinter构建一个简易的登录注册窗口。通过布局标签、输入框和按钮,结合字典存储用户数据,实现基本的身份验证逻辑。文章详细解析了textvariable参数获取输入内容的方法及Button命令绑定机制,提供完整代码示例供参考。

tkinter是Python的标准库之一,具备强大的图形界面构建能力。本文将演示如何利用该库制作一个简易的注册登录窗口(界面设计较为简单)。

一、各种组件的布局

在制作之前,需要明确各个窗体组件的大致位置。既然是登录注册功能,自然需要包含用户名和密码的标签以及用于输入文字的文本框。

'创建用户名的标签'
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登录注册内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。