4
3

More than 3 years have passed since last update.

Windowsで通知を出す神パッケージ「zroya」を見つけた話

Last updated at Posted at 2020-04-15

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)

結果
1.png

アイコン付き複数行で通知

今回はこれを使います

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)

結果
2.png

通知をクリックされたときのイベント付き

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)

結果
image.png
image.png
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")

結果
image.png
アクションセンター2の表示
image.png

注意

通知が表示されないとき

上記サンプルコードだけを実行すると、通知が表示されません
恐らく通知を送信してから表示するまでの間にラグがあり、その間にPythonが終了してしまうためだと思います
その場合、最下部に

from time import sleep
sleep(1)

を入れると表示されます。

それでも表示されないとき

ここを参考に設定を見直してください


  1. WinAPIはソースが長すぎて使いづらく、Powershellは個人的に嫌いです
    まぁ使いやすいようにクラスかパッケージを書けばいいだけなんですが…凄まじくめんどくさい… 

  2. 右からスッと出てくる、通知一覧と他諸々があるやつです 

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3