用python写一个windows消息提醒小程序

 更新时间:2023年12月27日 09:44:03   作者:为谁_疯狂  
上班时,由于自己经常coding到忘记时间,经常会一坐坐很久,搞的劳资腰都不好了,所以没事闲的写了个久坐提醒的小程序,文中有详细的代码示例,讲解的非常详细,感兴趣的朋友可以参考下

一、需求

上班时,由于自己经常coding到忘记时间,经常会一坐坐很久,搞的劳资腰都不好了,所以没事闲的写了个久坐提醒的小程序。

二、功能描述

能设置时间间隔,过了间隔时间windows发出提醒消息,能定制消息内容。

三、实现

用到的大概有,
python,
ttkbootstrap(bootstrap ui页面),
plyer(windows消息),
threading(多线程包)

实现代码(全):

import os
import time

import ttkbootstrap as ttk
from ttkbootstrap.constants import *
from ttkbootstrap.scrolled import ScrolledText
from plyer import notification
import threading

# 线程开关
global a_true
a_true = True
# 线程
thread1 = None
# 文本路径
path = 'd:/msg-notify.txt'


# ~休息提醒~


def notify(v, w_t):
    global a_true
    while a_true:
        notification.notify(
            title='~温馨提示~',
            message=v,
            app_icon=None,
            timeout=100,
        )
        wait_time = int(w_t) * 60
        for i in range(wait_time):
            # 未到时间 就睡觉
            if i != wait_time:
                if not a_true:
                    print('~~判断~~', a_true)
                    break
                time.sleep(1)

        # time.sleep(int(w_t))# * 60
    pass


def setup_frame(master):
    root = ttk.Frame(master, )

    btn_frame = ttk.Frame(root, padding=(10, 10, 10, 10), border=10)
    btn_frame.pack(side=TOP, fill=BOTH)  # 如果去掉fill,则变为居中了; 如果加side=LEFT 则纵向居中

    txt1 = ttk.Entry(btn_frame, font=("微软雅黑", 10), )  # width=200,
    txt1.pack(side=LEFT, )

    # 开启发送消息线程
    def send_msg():
        global thread1
        global a_true
        if thread1 is not None:
            a_true = False
            thread1.join(1)
            thread1.is_alive()
            print('~~~停止线程1~~~', thread1.is_alive())
        print('open_file_test')
        wait_time = txt1.get()
        value = text_area.get(1.0, 'end')
        thread1 = threading.Thread(target=notify, args=(value, wait_time,))
        a_true = True
        thread1.start()
        # 等待线程结束
        # thread1.join()
        print('~~~开启线程~~~')

    # 停止提醒线程
    def stop_msg():
        global thread1
        if thread1 is not None:
            global a_true
            a_true = False
            thread1.join(1)
            print('~~~停止线程2~~~')

    btn_1 = ttk.Button(btn_frame, text="开始提醒", command=send_msg, bootstyle=PRIMARY)
    btn_1.pack(side=LEFT, )
    btn_2 = ttk.Button(btn_frame, text="停止提醒", command=stop_msg, bootstyle=DANGER)
    btn_2.pack(side=LEFT, )

    # 提醒内容
    a_frame = ttk.Frame(root, padding=(10, 0, 0, 0), border=10)  # padding
    a_frame.pack(side=TOP, fill=BOTH)  # 如果去掉fill,则变为居中了; 如果加side=LEFT 则纵向居中

    b_frame = ttk.Frame(root, padding=(10, 0, 0, 0), border=10)
    b_frame.pack(side=TOP, fill=BOTH)  # 如果去掉fill,则变为居中了; 如果加side=LEFT 则纵向居中
    t_label = ttk.Label(
        master=a_frame, text="提醒内容:", font="-size 13 -weight bold",  # width=20,    # background='red' -weight bold
    )
    t_label.pack(side=LEFT)

    text_area = ScrolledText(master=b_frame, height=100, autohide=True)
    text_area.pack(side=TOP, fill=BOTH)

    # 初始化提醒内容
    text_area.delete('0.0', END)  # 删除内容

    # TODO 读取文件内容
    file_exist = os.path.exists(path)
    notify_str = None
    if file_exist:
        rio = open(path, )
        notify_str = rio.read()
        rio.close()
    print(notify_str)
    if notify_str is None or notify_str == '':
        text_area.insert('insert', '该活动活动了!\n动动手,动动脚~\n起飞~~~')
    return root


if __name__ == "__main__":
    app = ttk.Window(
        title='作息提醒',
        size=(380, 480),  # 窗口的大小 (宽, 高)
        themename="litera",  # 设置主题
        position=(960, 400),  # 窗口所在的位置
        minsize=(0, 0),  # 窗口的最小宽高
        maxsize=(1920, 1080),  # 窗口的最大宽高
        # resizable=None,  # 设置窗口是否可以更改大小
        # alpha=1.0,  # 设置窗口的透明度(0.0完全透明)
    )

    bagel = setup_frame(app)
    bagel.pack(side=LEFT, fill=BOTH, expand=YES)

    app.mainloop()

四、打包

打包使用的是pyinstaller,简单说明下,-w 不显示命令行打包 -F 表示生成exe文件,然后后面的–hidden-import是因为,不加plyer包打不进去,不知道为啥,所以用打包参数的方式import了。

pyinstaller -w -F msg.py --hidden-import plyer.platforms.win.notification

五、效果

保护老腰完成~!

以上就是用python写一个windows消息提醒小程序的详细内容,更多关于python消息提醒程序的资料请关注脚本之家其它相关文章!

相关文章

  • Pytorch 神经网络—自定义数据集上实现教程

    Pytorch 神经网络—自定义数据集上实现教程

    今天小编就为大家分享一篇Pytorch 神经网络—自定义数据集上实现教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python零钱兑换的实现代码

    Python零钱兑换的实现代码

    假如有这样一个问题给你一个整数数组 coins ,表示不同面额的硬币以及一个整数 amount ,表示总金额,计算并返回可以凑成总金额所需的最少的硬币个数,接下来通过示例代码给大家介绍Python零钱兑换问题,感兴趣的朋友一起看看吧
    2022-05-05
  • 如何用python实现一个HTTP连接池

    如何用python实现一个HTTP连接池

    这篇文章主要介绍了如何用python实现一个HTTP连接池的步骤,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2021-01-01
  • python tkinter之 复选、文本、下拉的实现

    python tkinter之 复选、文本、下拉的实现

    这篇文章主要介绍了python tkinter之 复选、文本、下拉的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • pandas学习之df.fillna的具体使用

    pandas学习之df.fillna的具体使用

    本文主要介绍了pandas学习之df.fillna的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Python文件操作函数用法实例详解

    Python文件操作函数用法实例详解

    这篇文章主要介绍了Python文件操作函数用法实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Python中的哈希算法模块hashlib详解

    Python中的哈希算法模块hashlib详解

    这篇文章主要介绍了Python中的哈希算法模块hashlib详解,hashlib模块实现了多种哈希算法,包括MD5以及SHA家族的算法,通过algorithms_guaranteed可以查看hashlib中封装的所有算法,需要的朋友可以参考下
    2023-08-08
  • Python线程之如何解决共享变量问题

    Python线程之如何解决共享变量问题

    这篇文章主要介绍了Python线程之如何解决共享变量问题,掐灭问我们学习了银行转账的这个场景,本文解决上次多个线程的操作都更改了amount变量导致运行结果不对的问题,需要的朋友可以参考一下
    2022-02-02
  • Django中ajax发送post请求 报403错误CSRF验证失败解决方案

    Django中ajax发送post请求 报403错误CSRF验证失败解决方案

    这篇文章主要介绍了Django中ajax发送post请求 报403错误CSRF验证失败解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 解读python cvxpy下SDP问题编程

    解读python cvxpy下SDP问题编程

    这篇文章主要介绍了解读python cvxpy下SDP问题编程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12

最新评论