屏幕时间计时器(python + Tkinter

2024-08-25 03:12

本文主要是介绍屏幕时间计时器(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:@staticmethoddef static_method(x, y):return x * ydef instance_method(self, x, y):return x + yobj = MyClass()
result = obj.instance_method(1, 2)
print(result)  # 输出: 3result =  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: 数据绑定,用于获取或设置组件的值。

2. 输入验证

  • validate="key": 验证类型,指定何时进行输入验证。
  • validatecommand=validatecommand: 验证命令,绑定验证函数。

3. 数值范围(from_ 是最小值,to 是最大值,体现了范围的起点和终点

  • from_=from_: 组件的最小值。
  • to=to: 组件的最大值。

4. 外观样式

  • 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方法获取

功能更新

语法:

(1)监控某进程是否运行(psutil通过遍历所有运行进程,查找目标进程名

(2)监控主机是否访问某个网站

1.监控根域名(如 blog.csdn.net)即可判断是否访问了该网站的任何页面,因为所有子页面请求都会通过根域名进行通信

2.浏览器访问网页核心步骤

  • DNS 解析:将域名转换为 IP 地址。
  • 发送请求:浏览器向服务器发送页面请求。
  • 接收并渲染响应:服务器返回网页内容,浏览器解析并显示页面。

3.监控原理

  • 域名解析

    • 将目标网站的域名解析为对应的 IP 地址,用于连接检测。
  • 数据包捕获与处理

    • 捕获网络数据包,通过检测 TCP SYN 包识别与目标 IP 的连接尝试。
  • 后台监控与线程管理

    • 在后台线程中持续运行监控过程,确保实时检测而不阻塞主程序。

这篇关于屏幕时间计时器(python + Tkinter的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1104377

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚