屏幕时间计时器(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删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Python包管理工具pip的升级指南

《Python包管理工具pip的升级指南》本文全面探讨Python包管理工具pip的升级策略,从基础升级方法到高级技巧,涵盖不同操作系统环境下的最佳实践,我们将深入分析pip的工作原理,介绍多种升级方... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核