Windowsで通知したい
監視アプリやトレイアプリで通知をしたいとき、丁度いいパッケージを見つけられませんでした
一応、WinAPIとかPowershellとか使えば出来るんですが、1
- Python3で
- Windowsで
- Cpython・Powershellを使わずに
- Pythonのパッケージを使って
- 数行で
- トースト通知を出す
という条件だと中々ヒットしないんです…
そんな貴方にzroya!
悩むこと数ヶ月、ついにzroyaというパッケージを見つけました
WinToastというC++ライブラリを使ってるみたいです
まぁ結局Cpython使ってるようですが、使いやすいならOKです
インストール
pipで入ります
pip install zroya
使い方
基本的には公式ドキュメント見ればいいので、ここでは基本的な使い方を簡単にまとめます。
シンプルに通知
import zroya
zroya.init("Python", "a", "b", "c", "d")
t = zroya.Template(zroya.TemplateType.Text1)
t.setFirstLine("Just one bold line")
zroya.show(t)
アイコン付き複数行で通知
今回はこれを使います
import zroya
zroya.init("Python", "a", "b", "c", "d")
t = zroya.Template(zroya.TemplateType.ImageAndText4)
t.setFirstLine("First bold line")
t.setSecondLine("Second line is in regular font")
t.setImage("cut_vegetable_cabbage.png")
zroya.show(t)
通知をクリックされたときのイベント付き
import zroya
import time
def onClickHandler(notification_id):
print("Clicked!")
zroya.init("Python", "a", "b", "c", "d")
t = zroya.Template(zroya.TemplateType.Text1)
t.setFirstLine("Click on me, please!")
zroya.show(t, on_click=onClickHandler)
time.sleep(10)
結果
Cpp: EventHandler: Activated: なんたらかんたら
って出てるのが気になる人、下のやつを指定すると何故か消えます
通知の送信元をpython.exe以外にしたいとき
上記のzyora.init()
を以下にします
status = zroya.init(
app_name="NotifyBot",
company_name="MyBotCorp",
product_name="NoBo",
sub_product="core",
version="v01"
)
if not status:
print("Initialization failed")
結果
アクションセンター2の表示
注意
通知が表示されないとき
上記サンプルコードだけを実行すると、通知が表示されません
恐らく通知を送信してから表示するまでの間にラグがあり、その間にPythonが終了してしまうためだと思います
その場合、最下部に
from time import sleep
sleep(1)
を入れると表示されます。
それでも表示されないとき
ここを参考に設定を見直してください