Python(Tk)登录界面

前言:

什么是tk,python里的tk是什么,能干什么?

Tkinter模块(“Tk 接口”)是Python的标准Tk GUI工具包的接口.

Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.Tk8.0的后续版本可以通过ttk实现本地窗口风格,并良好地运行在绝大多数平台中。

简单就是一个简单的界面制作,学习这里可以快速学期其他的界面比如说Qt5

这里我们来使用tkinter库来制作一个登录界面

首先我们先制作一个窗口

这里就是一个窗体的代码,运行查看效果

 可以可以,下面我们就来制作一下他的按钮的功能,先是登录按钮的功能

这里我是设置可以登录三次,三次失败后就直接把窗体给退出,就是程序结束。

前提我们要有一个账号和密码存放的文件 

这里我们就定义一个read1函数来获取账号密码等数据 

 这里我们就把登录按钮制作好了,下面我们来制作注册按钮的功能

这里我使用的是把窗口变成透明色,这样我们的用户就看不到登录窗口了

而后我们再写一个函数来实现注册功能

 而后我们运行代码

 最后我们实现一下返回功能就好了

这样我就使用python完成了登录界面的制作

下面是我的代码

# 先导入tkinter, sys, re库
from tkinter import *
from tkinter import messagebox as msgbox
import sys
import re


# 这里定义一个Tking类
class Tking(object):
    # 初始化
    def __init__(self):
        self.win = Tk()
        self.count = 3


    # 定义函数来获取数据内容
    def read1(self):
        with open('zhanghao.txt', 'r')as f:
            file = f.read()
            return file


    # 定义函数来实现“登录”按钮的功能
    def js(self):
        # 调用函数获取账号信息
        data = self.read1()

        # 获取用户输入的信息
        user = self.username.get()
        passwd = self.passwd.get()

        # 使用正则得到我们想要的数据
        user1 = re.findall(r'账号:(.*\d?)', data)
        passwd1 = re.findall(r'密码:(.*\w?)', data)

        # 这里判断输入错误的次数,等于次就结束程序
        if self.count == 0:
            msgbox.showinfo('警告!', '非法入侵!\n启动自动销毁模式!!!')
            self.win.quit()
            sys.exit(0)

        # 这里对用户的数据和账号数据进行对比
        for i in range(len(user1)):
            if user == user1[i] and passwd == passwd1[i]:
                msgbox.showinfo('登录', '登录成功!')
                break
        else:
            msgbox.showinfo('失败!', '你还可以登录%s次' % self.count)
            self.count -= 1


    # 定义返回函数,使用“返回”按钮的功能
    def fanhui(self):
        # 使登录窗口恢复颜色,并销毁掉注册窗口
        self.win.attributes('-alpha', 1)
        self.win1.destroy()


    # 定义函数,实现注册功能
    def register(self):
        # 获取用户输入的数据
        username = self.username1.get()
        passwd1 = self.passwd1.get()
        passwd2 = self.passwd2.get()

        if passwd1 == '' or passwd2 == '':
            return msgbox.showerror('失败!', '不能填空!!!')

        # 判断用户输入的数据
        if passwd1 != passwd2:
            msgbox.showerror('失败!', '注册失败,两次密码不一致!')
        else:
            msgbox.showinfo('成功', '恭喜你注册成功!')
            with open('zhanghao.txt', 'a')as file:
                file.write('账号:')
                file.write(username + '\n')
                file.write('密码:')
                file.write(passwd2 + '\n')


    # 定义函数实现“注册”按钮的功能
    def js1(self):
        # 使用登录界面变成透明色,让用户看不到
        self.win.attributes('-alpha', -1)

        # 定义窗口2,来实现注册窗口
        self.win1 = Tk()
        self.win1.geometry("300x200")
        self.win1.title("注册")

        # 定义输入框
        self.username1 = Entry(self.win1)
        self.passwd1 = Entry(self.win1, show="*")
        self.passwd2 = Entry(self.win1, show="*")
        self.username1.place(x=110, y=25)
        self.passwd1.place(x=110, y=75)
        self.passwd2.place(x=110, y=125)

        # 定义标签
        name4 = Label(self.win1, text="用户名:", font=('宋体', 15), width=10)
        name4.place(x=1, y=20)
        name5 = Label(self.win1, text="密码:", font=('宋体', 15), width=10)
        name5.place(x=1, y=70)
        name6 = Label(self.win1, text="确认密码:", font=('宋体', 15), width=10)
        name6.place(x=1, y=120)

        # 定义按钮
        button = Button(self.win1, text="返回", font=('宋体', 10), width=5, command=self.fanhui)
        button.place(x=250, y=170)
        button1 = Button(self.win1, text="注册", font=('宋体', 15), width=10, command=self.register)
        button1.place(x=100, y=160)

        # 窗口运行
        self.win1.mainloop()


    # 定义函数,创建窗口
    def windows(self):
        self.win.geometry("300x200")
        self.win.title("登录")

        # 设置按钮
        self.username = Entry(self.win)
        self.passwd = Entry(self.win, show="*")
        self.username.place(x=110, y=25)
        self.passwd.place(x=110, y=75)

        # 设置标签,实现在窗口上打印“用户名:”等
        name1 = Label(self.win, text="用户名:", font=('宋体', 15), width=10)
        name1.place(x=1, y=20)
        name2 = Label(self.win, text="密码:", font=('宋体', 15), width=10)
        name2.place(x=1, y=70)

        # 设置按钮
        button = Button(self.win, text="登录", font=('宋体', 15), width=10, command=self.js)
        button.place(x=20, y=110)
        button1 = Button(self.win, text="注册", font=('宋体', 15), width=10, command=self.js1)
        button1.place(x=140, y=110)

        # 窗口运行
        self.win.mainloop()


# 调用类
if __name__ == '__main__':
    tk = Tking()
    tk.windows()

 运行看看效果

 

代码试用成功!

感谢大家的阅读!

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2023年12月21日
下一篇 2023年12月21日

相关推荐