编程学习网 > 编程语言 > Python > Python做Windows弹窗通知教程
2023
06-06

Python做Windows弹窗通知教程

有时候当你启动一个数据处理Python脚本,你并不知道它要运行多久,于是你将它最小化后开始网上冲浪。但是无论是频繁地切回去查看它是否结束或是猛然察觉它早就结束了,都会影响心情。

如果脚本结束后会产生一个友好可见的通知该多好。
趁这个五一假期,我研究了几个很久没有维护的创建Windows Toast弹窗的Python包,然后自己写了一个。
github:https://github.com/Mo-Dabao/winsdk_toast
gitee:https://gitee.com/mo_dabao/winsdk_toast
从包的名字winsdk_toast可以看出,是基于winsdk这个包进行封装的,而winsdk本身是对C++/WinRT的Python封装,相比较原来的winrt包,作者都是同一波,只是winrt已经是unmaintained的状态了。
winsdk_toast目前的主要作用就是从Python环境创建定制的Windows8+系统通知,在Windows中没有开启专注模式的情况下,屏幕右下角会弹出Toast通知。在不知道要运行多久的Python程序结束处调用winsdk_toast,就可以放心地离开IDE干别的事了,等程序结束自会有通知。
安装
pip install winsdk_toast
使用方式
首先导入两个类Notifier, Toast,前者负责显示,后者负责显示的内容:
from os.path import abspath
from winsdk_toast import Notifier, Toast
path_pic =abspath('./example/resource/python.ico')
notifier = Notifier('程序名 applicationId')
接下来是三个示例,由于篇幅关系都只给出更面向对象的实现方式,对应的xml实现方式可以到Github页面查看。
最小化示例
# %% minimal example
toast = Toast()
toast.add_text('第一行1st line')
notifier.show(toast)

简单示例
# %% simple example
toast = Toast()
toast.add_text('第一行1st line', hint_align='center', hint_style='caption')
toast.add_text('第二行2nd line')
toast.add_text('第三行3rd line', placement='attribution')
toast.add_image(path_pic,placement='appLogoOverride')
toast.add_action('关闭 Close')
toast.set_audio(silent='true')
notifier.show(toast)

复杂示例
# %% example for control freak
toast = Toast()
element_toast = toast.set_toast(
   launch='blah', duration='long', displayTimeStamp='2022-04-01T12:00:00Z',scenario='default',
   useButtonStyle='false', activationType='background'
)
element_visual = toast.set_visual(
   version='1',, baseUri='ms-appx:///', branding='none',addImageQuery='false'
)
element_binding = toast.set_binding(
   template='ToastGeneric', fallback='2ndtemplate',,addImageQuery='false',
   baseUri='ms-appx:///', branding='none'
)
element_text = toast.add_text(
   text='第一行 1st line for control freak', id_='1',lang='zh-CN', placement=None,
   hint_maxLines='1', hint_style='title', hint_align='center',hint_wrap='false',
   element_parent=element_binding
)
element_group = toast.add_group()
element_subgroup_left = toast.add_subgroup(element_parent=element_group)
element_text = toast.add_text(
   text='第二行 2nd line for control freak', id_='2',lang='zh-CN', placement=None,
   hint_maxLines='1', hint_style='captionSubtle ', hint_align='left',hint_wrap='false',
   element_parent=element_subgroup_left
)
element_subgroup_right =toast.add_subgroup(element_parent=element_group)
element_text = toast.add_text(
   text='第三行 3rd line for control freak', id_='3',lang='zh-CN', placement='attribution',
   hint_maxLines='1', hint_style='captionSubtle', hint_align='left',hint_wrap='false',
   element_parent=element_subgroup_right
)
toast.add_image(
   path_pic, id_=None, alt='', addImageQuery='false',
   placement='appLogoOverride', hint_crop='circle'
)
toast.set_actions()
toast.add_action(
    '关闭 Close', arguments='dismiss', activationType='system',placement=None,
   imageUri=None, hint_inputId=None, hint_buttonStyle=None,hint_toolTip='tip close'
)
notifier.show(toast)

说明
事件和回调。增加交互性。
完善文档。
自定义通知声音。据Microsoft Docs上所示更新,这个可能比较难做。
...
使用方式
就在我将要完成的时候,我才发现有人基于同样的依赖已经做了windows_toast(https://github.com/DatGuy1/Windows-Toasts)这个包,而且有事件回调处理。幸运的是我们的“风格”区别不小,重复造轮子但不完全重复,而且反正放假,我干脆接着做完拉倒。

如果你急着想用到事件回调等功能,请使用windows_toast,过段时间可以再来试试我的这个包。

以上就是Python做Windows弹窗通知教程的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取