屏幕时间计时器(python + Tkinter

库安装区别:

  • pip install 主要用于管理 Python 项目的依赖项。
  • apt-get install 用于系统级别的软件包管理,安装的范围更广,包括操作系统所需的所有软件包。

MVC设计模式

MVC 分层设计的核心:

  1. 模型(Model):管理数据和业务逻辑,提供数据存储、访问和更新功能。

  2. 视图(View):负责用户界面的展示,显示模型数据,与用户直接交互。

  3. 控制器(Controller):处理用户输入,更新模型,通知视图刷新,协调模型与视图的交互。

Tkinter介绍:

Tkinter 是 Python 的标准库,用于创建简单而跨平台的图形用户界面(GUI)

基本语法:

复制代码
import tkinter as tk  # 导入 tkinter 模块并简写为 tk

# 定义按钮点击事件的回调函数
def on_button_click():
    entry_text = entry.get()  # 获取文本框中输入的内容
    label.config(text=f"You entered: {entry_text}")  # 更新标签的文本为用户输入的内容

# 创建主窗口
root = tk.Tk()
root.title("Simple Tkinter App")  # 设置窗口标题

# 创建一个标签,提示用户输入内容
label = tk.Label(root, text="Enter something:", font=("Arial", 14))
label.pack(pady=10)  # 使用 pack() 布局管理器,并设置上下间距为 10 像素

# 创建一个文本输入框
entry = tk.Entry(root, width=20)  # 设置文本框宽度为 20 个字符
entry.pack(pady=10)  # 使用 pack() 布局管理器,并设置上下间距为 10 像素

# 创建一个按钮,当点击时执行 on_button_click 函数
button = tk.Button(root, text="Submit", command=on_button_click)
button.pack(pady=10)  # 使用 pack() 布局管理器,并设置上下间距为 10 像素

# 启动 Tkinter 主事件循环
root.mainloop()

运行模式:

  • 界面布局 :开发者使用 Tkinter 提供的控件(如 LabelButtonEntry)创建和布局界面。
  • 事件绑定:通过将控件与特定事件绑定到回调函数,实现用户交互。
  • 事件处理:当用户与界面进行交互时,触发事件,执行相应的回调函数。
  • 事件循环:启动事件循环,应用程序等待并响应用户的操作,直到用户关闭程序。

项目结构;

Controller:

(它将业务逻辑和用户交互的结果转化为具体的操作

1.SoundFactory类:
  • 配置音频系统参数
  • 生成音频方法
参数介绍:
  • 采样率 (frequency=44100)

    • 定义音频的采样率,影响音频的清晰度和细节。标准值为 44100 Hz,适用于高质量音频。
  • 位深度 (size=-16)

    • 设置音频样本的位深度。-16 表示使用 16 位有符号音频,提供更广的动态范围。
  • 音频通道数 (channels=2)

    • 指定音频通道的数量。2 表示立体声,适用于左右声道的音频播放。
  • 缓冲区大小 (buffer=2048)

    • 控制音频数据的缓冲区大小,影响音频播放的延迟和稳定性。
语法注意:

(1) @StaticMethod装饰器 实现静态方法,不需要实例化即可实现

self 参数方法,必须实例化后才能调用方法

复制代码
class MyClass:
    @staticmethod
    def static_method(x, y):
        return x * y
    
    def instance_method(self, x, y):
        return x + y

obj = MyClass()
result = obj.instance_method(1, 2)
print(result)  # 输出: 3

result =  MyClass().static_method(1, 2)
print(result)  # 输出: 2

2.DisplayController类:

Model:

1. Configure
  • 功能:加载并管理配置文件。
  • 关键点
    • 初始化时设置配置文件路径。
    • 提供方法读取配置文件中的值。
语法注意:

(1)在 .ini 配置文件中,数字值和注释不能放在同一行。同一行配置文件无法解析

2. Timer
  • 功能:管理计时器的初始化和状态。
  • 关键点
    • Configure 类获取配置信息,设置计时器的初始时间。
    • 管理计时器的运行状态。
    • 停止方法,启动方法,响铃方法,设置方法
语法注意:

(1)__init__ python 识别为构造函数

(2)在 Python 中,属性不需要提前定义,在类中,只要用 self.属性名 = 值

(3)实例属性是通过 self 定义的,通常只能在类实例化后使用,因为它们与特定对象绑定

(4)root.after(500, run_timer) 是 Tkinter 的方法,用于在 500 毫秒后执行 run_timer 函数,实现延时执行或定时器功能。

View:

1.WidgetFactory类
属性:

字体, 字体颜色, 字体背景色, 待显示的应用程序

(1)创建label

label文字

(2)创建button
  1. 结构和数据绑定
  • self.root: 组件的父容器,指定在哪个窗口或框架中显示。
  • textvariable=textvariable: 数据绑定,用于获取或设置组件的值。
  1. 输入验证
  • validate="key": 验证类型,指定何时进行输入验证。
  • validatecommand=validatecommand: 验证命令,绑定验证函数。
  1. 数值范围( from_ 是最小值,to 是最大值,体现了范围的起点和终点**)**
  • from_=from_: 组件的最小值。
  • to=to: 组件的最大值。
  1. 外观样式
  • bg=self.background_color: 背景颜色。
  • fg=self.foreground_color: 前景色或文本颜色。
  • relief="flat": 边框样式,设为平面无边框。
  • bd=1: 边框宽度。
  • width=3: 组件宽度,以字符数计算。
  • font=self.font: 字体样式。
  • justify="center": 文本居中对齐。
(3)创建spinbox
语法注意:

(1)validatecommand = root.register(factory.validate_numbers) 的作用是将 validate_numbers 函数注册为 tkinter 的验证命令,用于实时输入验证。

(2)create_spinbox(self.second_value, 0, 59, (self.spinput, "%P", "%s"))

"%P" 传递当前输入内容,"%s" 传递输入前的内容,确保验证函数实时检查输入是否有效。

2.displayView类

语法注意:

(1)调整顶层框大小 root.geometry("200x100")

(2)获取输入框内容 文本框 - pack后 - get方法获取

相关推荐
Sylvia33.3 小时前
足球数据接口开发实战:如何用火星数据API盘活赛事应用
java·服务器·开发语言·数据库·python
mounter6253 小时前
质检员与超能引擎的碰撞:KASAN 护航 eBPF JIT 的技术演进与安全抉择
linux·ebpf·linux kernel·kernel·kasan
风123456789~3 小时前
【Linux专栏】history常用命令
linux·运维·服务器
lupai3 小时前
身份证二要素实名认证 API 落地应用指南
python
熬夜苦读学习3 小时前
基于websocket的多用户五子棋网页游戏
linux·服务器·网络·websocket·网络协议·游戏·五子棋
cxr8283 小时前
大语言模型上下文缓存命中率测试全场景清单
人工智能·python·算法·缓存·语言模型·自然语言处理·llm
某林2123 小时前
大模型边缘部署到底层硬件闭环
python·架构·机器人·硬件架构·ros2
fpcc3 小时前
Linux 7.1介绍
linux·运维
LadenKiller3 小时前
最新量化软件选择,先按能力判断表达生成和执行
人工智能·python
三8444 小时前
磁盘管理/fdisk
linux·运维·服务器