上一篇:【Python】手把手教你用tkinter设计图书管理登录界面(上)-CSDN博客
下一篇:略
紧接上一篇文章,逐步实现功能,跟着我的脚步,把音乐打开,吃意大利面拌42号混凝土时,不影响东条英鸡捕捉野生三角函数。
运行结果
代码示例
python
"""
图书管理登录界面
"""
# 通配符 '*'
__all__ = ['main']
import tkinter as tk
from tkinter import ttk
class LoginUI(tk.Tk):
"""继承tk.Tk,创建登录UI"""
def __init__(self):
"""构造方法"""
# 调用tk.Tk的构造方法
super().__init__()
# 设计自己项目的UI
self.title('图书管理登录界面') # 标题
self.geometry('600x375') # 窗口像素大小
self.resizable(0, 0) # 窗口大小禁止调节
# 窗口背景图
photo = tk.PhotoImage(file='.\\..\\photo\\窗口背景图.png')
tk.Label(self, image=photo).pack()
# 系统名
tk.Label(self, text='图 书 管 理 系 统', font=('Tahoma', 30, 'bold')).place(x=110, y=40)
# 用户名
tk.Label(self, text='用户名').place(x=170, y=160)
# 输入用户名
self.userName = tk.StringVar()
self.userEntry = ttk.Entry(self, textvariable=self.userName)
self.userEntry.place(x=223, y=161)
# 随机用户名
ttk.Button(text='随机', width=4, command=self.randomUser).place(x=380, y=159)
# 密码
tk.Label(self, text='密 码').place(x=170, y=200)
# 输入密码
self.password = tk.StringVar()
self.passwordEntry = ttk.Entry(self, textvariable=self.password)
self.passwordEntry.place(x=223, y=201)
# 显示/隐藏密码
self.count = 0
self.showButton = ttk.Button(text='显示', width=4, command=self.showPassword)
self.showButton.place(x=380, y=199)
# 验证码
tk.Label(self, text='验证码').place(x=170, y=244)
# 输入验证码
self.inputVerifyCode = tk.StringVar()
self.verifyEntry = ttk.Entry(self, textvariable=self.inputVerifyCode, width=10)
self.verifyEntry.place(x=223, y=244)
# 随机验证码
self.showVerifyCode = tk.StringVar(value=self.getVerifyCode())
tk.Button(self, textvariable=self.showVerifyCode, relief='flat', width=7, command=self.updateVerifyCode).place(x=310, y=240)
# 刷新验证码
updatePhoto = tk.PhotoImage(file='.\\..\\photo\\验证码更新.png')
tk.Button(self, image=updatePhoto, relief='flat', command=self.updateVerifyCode).place(x=384, y=240)
# 登录
ttk.Button(self, text='登录').place(x=200, y=300)
# 注册
ttk.Button(self, text='注册').place(x=300, y=300)
# 预显示提示输入
self.bind('<FocusIn>', self.hintInput)
self.mainloop()
# 更新验证码
def updateVerifyCode(self, event=None):
self.showVerifyCode.set(self.getVerifyCode())
# 获取验证码
def getVerifyCode(self, num=6, event=None):
import random
# 获取6位验证码的容器
container = []
# 大小写字母
for i in range(26):
container.append(chr(ord('a')+i))
container.append(chr(ord('A')+i))
# 数字
for i in range(26*2):
container.append(str(i)[-1])
# 在容器内获取随机数
verify_code = ''
for i in range(num):
verify_code += random.choice(container)
return verify_code
# 显示密码
def showPassword(self, event=None):
self.count += 1
if self.count % 2:
self.showButton.config(text='隐藏')
self.passwordEntry.config(show='')
else:
self.showButton.config(text='显示')
if self.password.get() != '请输入密码':
self.passwordEntry.config(show='*')
# 随机用户名
def randomUser(self, event=None):
import random
name = ['枫叶国池阮范', '阿三国郑井人', '灯塔国申井冰', '泡菜国杨巅峰', '刺身国董不咚',
'吕友兵', '侯力携', '布重用', '戴铝帽', '史真香', '李盐虾', '戳霜燕']
# 插入用户名
self.userName.set(random.choice(name))
self.userEntry.config(foreground='black')
# 预显示提示输入
def hintInput(self, event=None):
# 预显示输入用户名
if not self.userName.get():
self.userName.set('请输入用户名')
self.userEntry.config(foreground='gray')
elif self.userName.get() == '请输入用户名' and str(event.widget) == '.!entry':
self.userName.set('')
self.userEntry.config(foreground='black')
# 预显示输入密码
if not self.password.get():
# 显示密码输入
self.passwordEntry.config(show='')
self.password.set('请输入密码')
self.passwordEntry.config(foreground='gray')
elif self.password.get() == '请输入密码' and str(event.widget) == '.!entry2':
self.password.set('')
self.passwordEntry.config(foreground='black')
# 判断是否隐藏密码
if not self.count % 2:
self.passwordEntry.config(show='*')
# 预显示输入验证码
if not self.inputVerifyCode.get():
self.inputVerifyCode.set('验证码')
self.verifyEntry.config(foreground='gray')
elif self.inputVerifyCode.get() == '验证码' and str(event.widget) == '.!entry3':
self.inputVerifyCode.set('')
self.verifyEntry.config(foreground='black')
ui = LoginUI() # 实例化对象
# 主函数
def main():
print('Hello world.')
# 代码测试
if __name__ == '__main__':
main()
else:
print(f'导入{__name__}模块')
作者:周华
创作日期:2023/12/2