Python(Tk)登录界面

2024-05-29 1244阅读

前言:

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

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

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

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

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

首先我们先制作一个窗口

Python(Tk)登录界面

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

Python(Tk)登录界面

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

Python(Tk)登录界面

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

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

Python(Tk)登录界面

Python(Tk)登录界面

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

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

Python(Tk)登录界面

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

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

Python(Tk)登录界面

 而后我们运行代码

Python(Tk)登录界面

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

Python(Tk)登录界面

这样我就使用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()

 运行看看效果

Python(Tk)登录界面

Python(Tk)登录界面

 Python(Tk)登录界面

Python(Tk)登录界面

代码试用成功!

感谢大家的阅读!

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]