库安装区别:
pip install
主要用于管理 Python 项目的依赖项。apt-get install
用于系统级别的软件包管理,安装的范围更广,包括操作系统所需的所有软件包。
MVC设计模式
MVC 分层设计的核心:
-
模型(Model):管理数据和业务逻辑,提供数据存储、访问和更新功能。
-
视图(View):负责用户界面的展示,显示模型数据,与用户直接交互。
-
控制器(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
提供的控件(如Label
、Button
、Entry
)创建和布局界面。 - 事件绑定:通过将控件与特定事件绑定到回调函数,实现用户交互。
- 事件处理:当用户与界面进行交互时,触发事件,执行相应的回调函数。
- 事件循环:启动事件循环,应用程序等待并响应用户的操作,直到用户关闭程序。
项目结构;
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
- 结构和数据绑定
self.root
: 组件的父容器,指定在哪个窗口或框架中显示。textvariable=textvariable
: 数据绑定,用于获取或设置组件的值。
- 输入验证
validate="key"
: 验证类型,指定何时进行输入验证。validatecommand=validatecommand
: 验证命令,绑定验证函数。
- 数值范围(
from_
是最小值,to
是最大值,体现了范围的起点和终点**)**
from_=from_
: 组件的最小值。to=to
: 组件的最大值。
- 外观样式
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方法获取