【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

物联沃分享整理
物联沃-IOTWORD物联网 » 【Python教程】使用tkinter设计图书管理系统登录界面(二)

发表回复