定时提醒程序

简介: 【9月更文挑战第10天】

要实现一个 UI 页面显示实时时间,并且每小时的 25 分和 55 分改变窗口颜色,我们可以创建一个简单的 tkinter 应用程序。以下是一个更新后的示例代码,它将显示一个实时更新的时间,并在指定时间改变背景颜色:
image.png

import tkinter as tk
from time import strftime

class TimeApp:
    def __init__(self, root):
        self.root = root
        self.root.attributes('-topmost', 1)  # 窗口置顶
        self.root.geometry('200x100+10+10')  # 窗口大小及位置
        self.root.title("时间提醒")

        # 创建标签显示时间
        self.time_label = tk.Label(self.root, text="", font=("Helvetica", 16), bg="white", fg="black")
        self.time_label.pack()

        # 设置定时任务更新时间
        self.update_time()

        # 设置窗口背景颜色变化
        self.original_color = self.root['bg']  # 保存原始颜色
        self.root.bind('<Button-1>', self.reset_color)

        # 定时检查是否需要改变颜色
        self.root.after(1000, self.check_time)

    def update_time(self):
        current_time = strftime('%H:%M:%S')
        self.time_label.config(text=current_time)
        self.root.after(1000, self.update_time)  # 每秒更新时间

    def check_time(self):
        current_time = strftime('%H:%M:%S')
        minute = int(current_time.split(':')[1])
        if minute == 25 or minute == 55:
            if self.root['bg'] != 'red':
                self.root.configure(bg = 'red')
        else:
            if self.root['bg'] != self.original_color:
                self.root.configure(bg = self.original_color)
        self.root.after(60000, self.check_time)  # 每分钟检查一次

    def reset_color(self, event):
        self.root.configure(bg=self.original_color)

def main():
    root = tk.Tk()
    app = TimeApp(root)
    root.mainloop()

if __name__ == '__main__':
    main()

代码解释:

  1. 初始化窗口

    • 创建一个窗口,并设置其大小和标题。
  2. 创建时间标签

    • 使用 tk.Label 创建一个标签来显示时间,设置字体和颜色。
  3. 更新时间

    • update_time 方法每秒更新一次标签上的时间显示。
  4. 定时任务

    • check_time 方法每分钟检查当前时间的分钟数,如果是 25 或 55 分,就将窗口背景颜色改为红色,否则恢复原始颜色。
  5. 重置颜色

    • 通过绑定鼠标点击事件 <Button-1>,实现点击窗口后颜色恢复正常。
  6. 主函数

    • 创建主窗口并启动应用程序。

在 Tkinter 中,self.root.bind('<Button-1>', self.reset_color) 这行代码是用来为窗口绑定一个事件处理函数的。

  • self.root: 指的是 Tkinter 窗口(或称为根窗口)的对象。
  • bind: 是该窗口对象的一个方法,用于将特定的事件与一个处理函数(也称为回调函数)关联起来。
  • '<Button-1>': 这是一个事件字符串,指定了要绑定的鼠标事件类型。在这里,<Button-1> 表示鼠标左键点击事件。数字 1 代表鼠标左键,而其他数字可能代表不同的按钮(例如,<Button-2> 通常代表鼠标中键,<Button-3> 代表鼠标右键)。
  • self.reset_color: 是一个方法(或函数)的引用,当触发了上述定义的事件(即鼠标左键点击)时,这个方法将被调用。

所以,这行代码的意思是:“当用户在窗口上点击鼠标左键时,调用 self.reset_color 方法。”

在你的程序中,self.reset_color 方法的作用是重置窗口的背景颜色,如下所示:

def reset_color(self, event):
    self.root.configure(bg=self.original_color)
目录
相关文章
|
5月前
|
弹性计算 安全 机器人
一键搞定定时自动化通知
您是否经常忘了需要每周要填报工作时长?您的团队是否需要每月定时盘点HC?您是否每月末都在工作群提醒大家更新OKR? 这些简单的定时任务是不是经常会忘记或者占用您的精力?如果你也有这些烦恼,是时候来试试这个应用与数据集成平台——阿里云计算巢AppFlow了,它能够像一个神经中枢,高效地串联起所有关键数据流,并且能够巧妙地运用现代化的通讯工具如钉钉群机器人,实现定时消息通知,让每一个重要信息都能准时送达,不再因为简单重复的定时工作而占用您的时间和精力~
216 0
|
5月前
如何定时打开网站
该内容是一个教程,介绍如何使用一个工具设置定时任务自动打开网页。用户需要从度娘网盘或蓝奏云下载工具,提取码分别为qwu2和2r1z。然后在工具中按Ctrl+3进入定时器模块,新建任务命名为“百度”,设置每1分钟执行一次,打开百度网站。通过右键添加链接并输入百度网址,完成设置后,倒计时任务会在主界面显示,计时结束会自动打开百度。
|
5月前
|
弹性计算 安全 机器人
定时提醒再也不用担心忘记啦
好记性不如烂笔头,烂笔头不如靠谱的自动化~~~正在寻找自动化流程编排工具或定时任务工具的朋友们赶紧看过来,为你介绍一款简单配置即可实现自动化定时提醒的平台阿里云计算巢AppFLow。
235 0
|
Java Linux 网络安全
教你如何五分钟捕获女神的芳心之定时邮件任务
教你如何五分钟捕获女神的芳心之定时邮件任务
|
资源调度 运维 Java
定时任务报警通知解决方案详解
随着微服务和云计算的兴起,定时任务技术也是发展迅速,不仅能做单机的定时任务,而且在分布式系统下应用也很广泛,成为了业务做兜底、数据处理的第一选择。
2504 3
定时任务报警通知解决方案详解
|
调度 Python
定时功能
利用Py简单实现定时功能
|
Arthas Java 测试技术
Arthas 手动触发生产定时任务的危险操作
背景 最近来了个实习僧小弟,安排他实现对目标网站 连通性检测的小功能,简单讲就是将下边的shell 脚本换成Java 代码来实现 #!/bin/bash URL="https://www.baidu" HTTP_CODE=`curl -o /dev/null -s -w "%{http_code}...
1669 0
MFC中实现定时执行与提醒功能(自编代码)
具体实现代码如下:添加一个计时器:SetTimer(1,1000,NULL);   下面仅列举核心代码,详细步聚不作说明,效果如下所示:     void CShowTimer::OnTimer(UINT_PTR nIDEvent){ if (nIDEvent==1) {  ...
1212 0
|
调度 Windows 数据采集
定时从列表中爬今日通知信息,打包成windows服务
场景模拟 每天8点爬取今日发布的新闻和通知公告,将爬取后的信息保存到Excel文件中,将程序发布成windows服务,开机即可自动启动。 技术使用 1.每天8点定时执行任务,使用Quartz.
1114 0