Windows8/8.1からトースト通知という画面端から通知をする機能が加わりました。
Windows10では、新しいアプリケーションプラットフォームであるUniversal Windows Platform(UWP)などでも手軽に実装が可能となりますが、Pythonのwin10toastを使えば、とても簡単にトースト通知を出すことができます。
今回はwin10toastの使い方を学んでいきます。
win10toastのインストール
まずはwin10toastをインストールします。
なお、以下はPyPiの詳細になります。
> 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()メソッドを実行すると、以下のお馴染みのトースト通知が表示されます。
特にエラーが無ければTrueが返ってきます。
第一引数が上段のタイトルで、第二引数が下段のメッセージになっています。
この時に、ループ処理でトースト通知をしようとする場合、まだオブジェクトがメソッドを終了するのを待たずに、別のトースト通知を発生させると、「そのクラスはまだウィンドウを開いています。」というエラーが発生し、ループ処理が中断してしまいます。
この クラスがウィンドウを開いている時間(トースト通知が表示されている時間)は、duration=<sec>という引数で調整が可能です。
また、threaded=Trueという引数を渡すと、Exceptionが発生しますが、スレッド処理によりループは継続されます。
なお、上記の通知アイコンはデフォルトでPythonアイコンになっていますが、icon_path=<path>で任意のアイコンを表示させることができるようになっています。
最後に
以上が、簡単な使い方となります。
機能的にはとてもシンプルなことしかできませんが、Web APIを使った情報収集や自宅のローカルサーバから簡単な通知を受信するなど、いろいろと応用ができそうです。