[代码]Python实现Windows任务栏通知提醒
消息源: 时间:2024-4-6 2:02:29,点击:0

Honker.org.cn红盟网讯 很多手机应用经常会弹出一些通知,从而霸占用户使用体验,会时不时让用户看一眼。而其实如果你开发的软件,让Windows也弹一下广告会怎样呢?

上代码

import tkinter as tk
from tkinter import font
import pystray
from PIL import Image, ImageTk
import time
import random
from threading import Thread

def notify(quote_content):
icon = pystray.Icon("name", Image.new('RGBA', (100, 100), (255, 255, 255, 0)), "软件名称")
icon.title = "图标标题"
icon.menu = pystray.Menu(pystray.MenuItem("关闭", lambda: icon.stop()))
icon.visible = True
icon.notify(quote_content)
time.sleep(5)
icon.visible = False

def start_notification():
custom_quote = entry_quote.get().strip()

if custom_quote:
while True:
Thread(target=notify, args=(custom_quote,)).start()
time.sleep(int(entry_time.get()))
else:
quotes_list = [
"生命在于不断探索与追求",
"保持好奇心,永不止步于学习",
"选择适合自己的道路,坚定前行",
"平凡中寻找不凡,活出精彩人生",
"相信自己,定能实现理想抱负",
"时光如梭,好好珍惜当下",
"不被他人期望束缚,做最好的自己",
"每个人都应认真对待自己的人生",
"生活不仅有眼前的苟且,还有诗和远方",
"一个人的故事,就是他的人生轨迹"
]
while True:
rand_item = random.choice(quotes_list)
Thread(target=notify, args=(rand_item,)).start()
time.sleep(int(entry_time.get()))

root = tk.Tk()
root.title("Windows任务栏消息通知")
root.geometry("460x300")
root.configure(bg="#F0F0F0")


root.resizable(False, False)

# 设置字体
title_font = font.Font(family="Microsoft YaHei", size=16, weight="bold")
label_font = font.Font(family="Microsoft YaHei", size=12)
button_font = font.Font(family="Microsoft YaHei", size=12, weight="bold")

#标题
label_title = tk.Label(root, text="Windows任务栏消息通知", font=title_font, bg="#F0F0F0", fg="#333333")
label_title.pack(pady=20)

#自定义格言输入框
label_quote = tk.Label(root, text="输入自定义通知,为空则使用默认通知:", font=label_font, bg="#F0F0F0", fg="#333333")
label_quote.pack(pady=10)

entry_quote = tk.Entry(root, font=label_font, width=30, bg="#FFFFFF", fg="#333333")
entry_quote.pack(pady=10)

#时间间隔设置
label_time = tk.Label(root, text="设置时间间隔每", font=label_font, bg="#F0F0F0", fg="#333333")
label_time.pack(pady=10, side=tk.LEFT)

entry_time = tk.Entry(root, font=label_font, width=10, bg="#FFFFFF", fg="#333333")
entry_time.insert(0, "20")
entry_time.pack(pady=10, side=tk.LEFT)

label_seconds = tk.Label(root, text="(秒)提醒一次", font=label_font, bg="#F0F0F0", fg="#333333")
label_seconds.pack(pady=10, side=tk.LEFT)

# 开始按钮
button_start = tk.Button(root, text="启动程序", font=button_font, bg="#4CAF50", fg="white", command=start_notification)
button_start.pack(pady=20, side=tk.LEFT)

root.mainloop()

 

首先,我们导入了必要的库和模块:

1.tkinter:用于创建GUI界面的库。

2.font:用于设置字体样式。

3.pystray:用于在任务栏中显示通知的库。

4.PIL:用于处理图像的库。

5.time:用于进行时间相关的操作。

6.random:用于生成随机数。

7.threading:用于创建多线程。

然后,我们定义了一个名为notify的函数,用于显示通知:

1.首先,我们创建了一个pystray.Icon对象,用于在任务栏中显示图标和通知。

2.我们设置了图标的标题和菜单,并将图标设置为可见。

3.使用notify方法显示通知,其中包括通知的内容。

4.然后,我们使用time.sleep方法暂停程序执行一段时间,以确保通知显示完整。

5.最后,我们将图标设置为不可见。

接下来,我们定义了一个名为start_notification的函数,用于启动通知程序:

1.首先,我们从输入框中获取用户输入的自定义通知内容。

2.如果用户输入了自定义内容,我们创建一个无限循环,并在每次循环中创建一个新的线程,将自定义内容作为参数传递给notify函数,并使用time.sleep方法暂停一段时间。

3.如果用户没有输入自定义内容,我们定义了一个包含多个引用的列表,并从中随机选择一个引用作为通知内容。然后,我们创建一个无限循环,并在每次循环中创建一个新的线程,将随机选择的引用作为参数传递给notify函数,并使用time.sleep方法暂停一段时间。

接下来,我们使用Tkinter创建了一个窗口,并设置了窗口的标题、大小和背景颜色。

然后,我们定义了一些字体样式,包括标题字体、标签字体和按钮字体。

接着,我们添加了标题标签和自定义通知输入框。

然后,我们添加了时间间隔设置的标签、输入框和单位标签。

接着,我们添加了一个启动按钮,并为其绑定了点击事件的处理函数。

最后,我们启动了Tkinter的事件循环,以等待用户与程序进行交互。

 

打印】【关闭

相关评论


我要评论
查看所有评论内容
评论内容
隐藏 是 
 

Copyright 2001-2024 Honker.org.cn All Rights

登录 | 快速注册 | 关于中国红客官网 | 网站留言