前言:
什么是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()
运行看看效果
代码试用成功!
感谢大家的阅读!
文章出处登录后可见!
已经登录?立即刷新