Engineering Note

プログラミングなどの技術的なメモ

win10toast

python-icon

Windows8/8.1からトースト通知という画面端から通知をする機能が加わりました。

Windows10では、新しいアプリケーションプラットフォームであるUniversal Windows Platform(UWP)などでも手軽に実装が可能となりますが、Pythonのwin10toastを使えば、とても簡単にトースト通知を出すことができます。 

今回はwin10toastの使い方を学んでいきます。

 

 

win10toastのインストール 

まずはwin10toastをインストールします。

なお、以下はPyPiの詳細になります。

pypi.org

 

 > pip install win10toast
 > pip freeze
 pypiwin32==223
 pywin32==224
 win10toast==0.9

 

win10toastは現在0.9がlatestで、依存パッケージのpywin32とpypiwin32というパッケージもインストールされます。

 

IPythonから通知を出してみる

まずIPythonを起動して以下のコマンドを入力してみます。

 

 In [1]: from win10toast import ToastNotifier
 In [2]: toaster = ToastNotifier()
 In [3]: toaster.show_toast("test", "test message")
 Out[3]: True

 

1行目でモジュールをインポートし、2行目でToastNotifier()のクラスオブジェクトを作成します。

そして3行目でshow_toast()メソッドを実行すると、以下のお馴染みのトースト通知が表示されます。

 

test_notifier

 

特にエラーが無ければTrueが返ってきます。

第一引数が上段のタイトルで、第二引数が下段のメッセージになっています。

この時に、ループ処理でトースト通知をしようとする場合、まだオブジェクトがメソッドを終了するのを待たずに、別のトースト通知を発生させると、「そのクラスはまだウィンドウを開いています。」というエラーが発生し、ループ処理が中断してしまいます。

この クラスがウィンドウを開いている時間(トースト通知が表示されている時間)は、duration=<sec>という引数で調整が可能です。

また、threaded=Trueという引数を渡すと、Exceptionが発生しますが、スレッド処理によりループは継続されます。

なお、上記の通知アイコンはデフォルトでPythonアイコンになっていますが、icon_path=<path>で任意のアイコンを表示させることができるようになっています。

 

最後に

以上が、簡単な使い方となります。

機能的にはとてもシンプルなことしかできませんが、Web APIを使った情報収集や自宅のローカルサーバから簡単な通知を受信するなど、いろいろと応用ができそうです。

 

参考書籍

入門 Python 3