【Python教程】使用tkinter设计图书管理系统登录界面(二)
上一篇:【Python】手把手教你用tkinter设计图书管理登录UI界面(一)-CSDN博客
下一篇:【Python】手把手教你用tkinter设计图书管理登录UI界面(三)-CSDN博客
如果是团队完成一个项目,大概流程是:立项–>分配任务–>完成(自己)任务–>测试(不通过打回)–>项目整合测试–>完成项目–>团队聚餐等。
上一篇我创建了“图书管理登录UI界面”项目的初始窗口,并没有绑定触发事件。
本篇文章我将在“图书管理系统项目\code”目录下新建“继承登录UI完善功能_1.py”(如下图),继承“登录UI.py”模块,继续完善部分功能:输入框预显示提示输入内容、密码显示&隐藏、获取验证码。
运行结果
继承登录UI完善功能_1.py
"""
继承登录UI完善功能_1 模块
"""
# 通配符 '*'
__all__ = ['LoginUI_one']
import random
from 图书管理系统项目.code.登录UI import LoginUI
class LoginUI_one(LoginUI):
"""继承LoginUI,完善登录UI功能"""
def __init__(self):
"""构造方法"""
# 调用LoginUI的构造方法
super().__init__()
# 完善登录UI功能
# 隐藏错误提示标签
self.hintLabel.place_forget()
# 隐藏随机用户名按钮
self.randomButton.place_forget()
# 显示/隐藏密码
self.showOrConcealButton.config(command=self.showOrConcealPassword)
# 随机验证码
self.verifyButton.config(command=self.updateVerifyCode)
# 刷新验证码
self.updateButton.config(command=self.updateVerifyCode)
# 预显示提示输入
self.bind('<FocusIn>', self.hintInput)
# 更新验证码
def updateVerifyCode(self, event=None):
self.showVerifyCode.set(self.getVerifyCode())
# 获取验证码
def getVerifyCode(self, num=6, event=None):
# 获取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 showOrConcealPassword(self, event=None):
self.showOrConcealCount += 1
# 显示密码
if self.showOrConcealCount % 2:
self.showOrConcealButton.config(image=self.concealPhoto)
self.passwordEntry.config(show='')
# 隐藏密码
else:
self.showOrConcealButton.config(image=self.showPhoto)
if self.password.get() != '请输入密码':
self.passwordEntry.config(show='*')
# 预显示提示输入
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.showOrConcealCount % 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')
# 代码测试
if __name__ == '__main__':
ui = LoginUI_one() # 对象实例化
ui.mainloop() # 窗口主循环
else:
print(f'导入【{__name__}】模块')
作者:周华
创作日期:2023/12/10
作者:周华2022