Tkinter笔记

登陆页

"""
使用Tkinter实现学生管理系统
面向对象编程

"""
from ttkbootstrap.dialogs import MessageDialog  # 对话框模块
from db import db  # 数据模块
import ttkbootstrap as ttk  # 导入ttkbootstrap
from ttkbootstrap.constants import *
from MainPage import MainPage  # 主页


class LoginPage(ttk.Frame):
    """登陆页Frame"""

    def __init__(self, master: ttk.Window):  # master: ttk.Window 标注master对象类型
        self.root = master  # 初始化窗口
        self.root.title('登陆页')  # 设置标题
        self.root.resizable(False, False)  # 设置窗口大小不可变

        super().__init__(self.root, padding=(100, 50))  # 父类初始化

        self.pack(fill=BOTH, expand=YES)  # 设置位置

        self.username = ttk.StringVar(value="admin")
        self.password = ttk.StringVar(value="")  # ttk内部类型变量

        self.create_form_entry("用户名:", self.username)  # 创建输入控件
        self.create_form_entry("密码:", self.password)
        self.create_buttonbox()  # 创建按钮

    def create_form_entry(self, label, variable):
        """创建输入表单"""
        container = ttk.Frame(self)  # 实例化容器
        container.pack(fill=X, expand=YES, pady=5)  # 控件布局

        lbl = ttk.Label(master=container, text=label, width=10)
        lbl.pack(side=LEFT, padx=5)

        ent = ttk.Entry(master=container, textvariable=variable)
        ent.pack(side=LEFT, padx=5, fill=X, expand=YES)

    def create_buttonbox(self):
        """创建按钮"""
        container = ttk.Frame(self)
        container.pack(fill=X, expand=YES, pady=(15, 10))

        sub_btn = ttk.Button(
            master=container,
            text="提交",
            command=self.on_submit,
            bootstyle=SUCCESS,
            width=6,
        )
        sub_btn.pack(side=RIGHT, padx=5)
        sub_btn.focus_set()

        cnl_btn = ttk.Button(
            master=container,
            text="取消",
            command=self.on_cancel,
            bootstyle=DANGER,
            width=6,
        )
        cnl_btn.pack(side=RIGHT, padx=5)

    def on_submit(self):
        flag, message = db.check_login(self.username.get(), self.password.get())  # 标志,提示信息
        if flag:
            self.destroy()  # 销毁登陆页Frame
            MainPage(self.root)
        else:
            self.show_error(message, title=' ', parent=None, alert=True)  # 展示错误对话框

    def on_cancel(self):
        """关闭应用"""
        self.quit()

    def show_error(self, message, title="", parent=None, alert=True):

        dialog = MessageDialog(
            message=message,  # 提示信息
            title=title,  # 标题
            parent=parent,
            buttons=["OK:primary"],  # 确认按钮
            icon='img/img.png',  # 图标
            alert=alert,
            localize=True,
        )
        dialog.show()


if __name__ == '__main__':
    root = ttk.Window(themename="superhero", iconphoto='img/2.png')  # 实例化root窗口对象

    LoginPage(mast
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值