IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python tkinter 界面设计中的模板继承 -> 正文阅读

[Python知识库]python tkinter 界面设计中的模板继承

在tkinter的界面设计中,使用模板继承,这样继承过来的代码具有模板的特性。这样做的主要目的是想在基础模板中调整字体、字号,前景颜色,背景颜色等,使继承于该基础模板的多个其他界面设计文件统一具有基础模板的设定,从而达到界面风格统一的效果。

项目文件夹

project    # 项目文件夹
    login.py        # 主程序文件
    database.py     # 操作数据库的文件
    gbase.db        # 数据库文件
    ui    # 程序界面文件夹
        __ini__.py   # 空文件,使该文件夹成为包文件
        ui_base.py   # 基础界面文件,设定字体、字号等样式
        ui_login.py  # 登录窗口的界面设计文件,继承自ui_base.py
        ui_tools.py  # 一些界面设计的工具模块

基础模板 ui_base.py

import tkinter as tk
from tkinter import ttk


class BaseWindow(tk.Tk):
    """创建基础窗口,设置常用参数"""
    def __init__(self):
        super().__init__()
        self.font_name = '微软雅黑'
        self.font_size = 14
        self.font = (self.font_name, self.font_size)
        self.option_add('*Font', self.font)
        ttk.Style().configure(".", font=self.font)

登录界面继承于该模板 ui_login.py

import tkinter as tk
from tkinter import ttk
from . import ui_base  # 使用相对导入,使不同包的 import 能找到该模块
from . import ui_tools


class Login(ui_base.BaseWindow):
    """登录窗口UI"""
    def __init__(self):
        """初始化"""
        super().__init__()  # 有点相当于tk.Tk()
        self.welcome = tk.StringVar()
        self.user = tk.StringVar()
        self.pwd = tk.StringVar()
        self.msg = tk.StringVar()
        self.btn_ok = ttk.Button()
        self.run()

    def run(self):
        self.title('系统登录')
        self.resizable(False, False)

        frm = tk.Frame(self)
        frm.pack(padx=40, pady=20)

        self.welcome.set('欢迎光临高卢美发造型管理系统')
        tk.Label(frm, textvariable=self.welcome, font=(self.font_name, self.font_size + 2, 'bold'),
                 fg='green').pack(pady=20)

        user_frm = tk.Frame(frm)
        user_frm.pack(pady=10)
        pwd_frm = tk.Frame(frm)
        pwd_frm.pack(pady=10)
        btn_frm = tk.Frame(frm)
        btn_frm.pack(pady=10)

        tk.Label(user_frm, text='用户名', width=8, anchor='w').pack(padx=5, side='left')
        tk.Entry(user_frm, textvariable=self.user).pack(side='left')

        tk.Label(pwd_frm, text='密码', width=8, anchor='w').pack(padx=5, side='left')
        tk.Entry(pwd_frm, textvariable=self.pwd, show="*").pack(side='left')

        self.btn_ok = ttk.Button(btn_frm, text='确定')
        self.btn_ok.pack(padx=10, side='left')
        ttk.Button(btn_frm, text='取消', command=self.destroy).pack(side='left')

        tk.Label(frm, textvariable=self.msg, fg='red').pack(pady=10)

        ui_tools.WinCenter(self)


if __name__ == '__main__':
    lg = Login()

    lg.title('逻辑与界面分离设计')
    lg.welcome.set('欢迎你UI时代!')

    lg.mainloop()

登录主程序 login.py

from ui import ui_login
import hashlib
import database

lg = ui_login.Login()


def verify():
    code = lg.user.get()
    pwd = lg.pwd.get()
    lg.msg.set('')
    if not code:
        lg.msg.set('用户名不能为空!')
        return
    elif not pwd:
        lg.msg.set('密码不能为空!')
        return

    password = hashlib.md5((code+pwd).encode()).hexdigest()

    db = database.Sqlite3DB()
    sql_text = f"select id from users where code = ? and password = ? ;"
    db.cur.execute(sql_text, (code, password))
    result = db.cur.fetchone()
    if result:
        lg.msg.set('登录成功!')
    else:
        lg.msg.set('用户名或者密码错误!')


lg.btn_ok.configure(command=verify)


lg.mainloop()

发布日期:8月 28, 2021
作者:lshgly
编辑tkinter 界面设计中的模板继承
分类:IT、Uncategorized、全部、原创
标签:python、tkinter、模板继承、界面设计

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-29 09:02:32  更:2021-08-29 09:03:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:18:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码