【Python】Windowsでポップアップ通知(通知バナー)をデスクトップに表示する:Plyer
2022.05.24 /
本記事ではPythonを使って、Windowsのデスクトップ画面にポップアップ通知(通知バナー)を表示する方法について解説していきます。
バックグラウンドで動いているアプリケーションで、なにかしらの更新(データベースなど)や問題が発生したら、その状況を通知したいことがあります。
PythonではPlyerライブラリを利用することで簡単に通知バナーをデスクトップ画面に表示できます。Plyerを使って進捗状況などを通知バナーで表示する方法を見ていきましょう。
本記事は以下のバージョンで行っています。
> Python -V
Python 3.9.7
Plyer
Plyerとは
Plyerとはハードウェアや様々なプラットフォームで共通する機能にアクセスするためのPythonライブラリです。Windowsだけでなく、MacやLinux、iOSなど様々なOSに対応しています。
PlyerはPythonに最初からインストールされている標準ライブラリではないため、別途インストールが必要です。
Plyerのライセンス形態はMITライセンスです。
ここではPlyerでNotificationsを使って、通知バナーを表示していきます。
通知バナーとは画面右下の隅にポップアップ表示されるメッセージ表示のことです。トーストとも呼ばれます。アプリケーションからの通知やアラート情報をユーザーに知らせるために使用されます
PlyerのサポートAPI
Platform | Android | iOS | Windows | OS X | Linux |
---|---|---|---|---|---|
Accelerometer | 〇 | 〇 | 〇 | 〇 | |
Audio recording | 〇 | 〇 | 〇 | ||
Barometer | 〇 | 〇 | |||
Battery | 〇 | 〇 | 〇 | 〇 | 〇 |
Bluetooth | 〇 | 〇 | |||
Brightness | 〇 | 〇 | 〇 | ||
Call | 〇 | 〇 | |||
Camera (taking picture) | 〇 | 〇 | |||
Compass | 〇 | 〇 | |||
CPU count | 〇 | 〇 | 〇 | ||
Devicename | 〇 | 〇 | 〇 | 〇 | |
Email (open mail client) | 〇 | 〇 | 〇 | 〇 | 〇 |
Flash | 〇 | 〇 | |||
GPS | 〇 | 〇 | |||
Gravity | 〇 | 〇 | |||
Gyroscope | 〇 | 〇 | |||
Humidity | 〇 | ||||
IR Blaster | 〇 | ||||
Light | 〇 | ||||
Native file chooser | 〇 | 〇 | 〇 | 〇 | |
Notifications | 〇 | 〇 | 〇 | 〇 | |
Orientation | 〇 | ||||
Proximity | 〇 | ||||
Screenshot | 〇 | 〇 | 〇 | ||
SMS (send messages) | 〇 | 〇 | |||
Spatial Orientation | 〇 | 〇 | |||
Speech to text | 〇 | ||||
Storage Path | 〇 | 〇 | 〇 | 〇 | 〇 |
Temperature | 〇 | ||||
Text to speech | 〇 | 〇 | 〇 | 〇 | 〇 |
Unique ID | 〇 | 〇 | 〇 | 〇 | 〇 |
Vibrator | 〇 | 〇 | |||
Wifi | 〇 | 〇 | 〇 |
本記事で利用する「Notifications」はiOSでは利用できないのでご注意ください。
Plyerのインストール
Plyerは標準ライブラリではないため、以下のようにpipコマンドでインストールします。
pip install plyer
「Successfully installed 」と表示されれば無事インストールの完了です。2022年5月現在ではplyer -2.0.0がインストールされます。
Plyerによる通知バナーを表示する
plyer.notification.notifyの使用
通知バナー(トースト通知)を表示するにはplyer.notification.notify()を使用します。notify()の構文は以下の通りです。
notify(title='', message='', app_name='', app_icon='', timeout=10, ticker='', toast=False)
パラメーター | 説明 |
---|---|
title (str) | 通知バナーのタイトル |
message (str) | 通知バナーに表示するメッセージ |
app_name (str) | 通知を発行するアプリケーション名 |
app_icon (str) | メッセージと共に通知バナーに表示するアイコン |
timeout (int) | 通知バナーを表示する時間、デフォルトは10 |
Windowsの場合、app_iconに指定する画像の拡張子はicoにしてください
通知バナーを表示する
実際にplyer.notification.notifyを使って通知バナーを表示してみましょう。
Pythonスクリプトの先頭では以下のようにnotificationをインポートすることが多いです。
from plyer import notification
以下コードを実行すると10秒後に自動的に消える通知バナーが表示されます。
from plyer import notification
notification.notify(
title="通知バナー",
message="メッセージ",
app_name="アプリ名",
app_icon="C:\office\office.ico",
timeout=10
)
サンプルプログラム
定期的に通知バーを表示
1分ごとに通知バーを表示するプログラムを以下に記します。
from plyer import notification
import time
def notice():
notification.notify(
title = "通知バナー",
message = str(i) + "分経過",
app_name = "アプリ名",
app_icon = "C:\office\office.ico",
timeout = 10,
)
i = 1
while True:
time.sleep(60)
notice()
i = i + 1
タスクトレイから定期的なプログラムを停止
上記で作成した定期的なプログラムは一度起動したら強制的にプログラムを終了する以外に停止する方法がありません。
そこでタスクトレイにプログラムを停止できるアプリケーションアイコンを追加し、そこからプログラムを停止できるようにします。
from plyer import notification
import time
import threading
from pystray import Icon, Menu, MenuItem
from PIL import Image
def notice():
notification.notify(
title = "通知バナー",
message = str(i) + "分経過",
app_name = "アプリ名",
app_icon = "C:\office\office.ico",
timeout = 10,
)
def quit_app():
global status
icon.stop()
status = False
def run_app():
pass
def task_tray():
global icon
image = Image.open("C:\office\office.ico")
menu = Menu(MenuItem('Quit', quit_app), MenuItem('Run', run_app))
icon = Icon(name='test', icon=image, title='pystray App', menu=menu)
icon.run()
i = 1
status = True
task_thread = threading.Thread(target=task_tray)
task_thread.start()
while status:
time.sleep(20)
notice()
i = i + 1
ここではタスクトレイにアプリを常駐させれるpystrayを使用しています。pystrayについては以下記事をご参照ください。
【Python】タスクトレイにアプリを常駐させる:pystrayで定期的に実行
exe化して配布・起動時に実行できるようにする
作成したプログラムはexe化することで社内の人に配布できるようにすると便利です。exe化するにはpyinstallerを利用します。
pyinstallerは標準ライブラリではないので、pipで別途インストールしましょう。
pip install pyinstaller
pyinstallerでプログラムをexe化するには以下のコマンドを実行します。
pyinstaller pyスクリプト名 --onefile
pyinstallerの使い方については以下記事をご参照ください。
【Python】pyinstallerでpyファイルを配布用にEXE化する方法
exe化することにより他の人に配布できるようになりました。Windowsのスタートアップにそのexeファイルを追加すれば、パソコン起動時に自動的に動くようにできます。
スタートアップへの追加方法は以下記事をご参照ください。
【Windows10】起動時に自動的にアプリを立ち上げる:スタートアップへの追加
まとめ
本記事「【Python】Windowsでポップアップ通知(通知バナー)をデスクトップに表示する:Plyer」はいかがでしたか。
Pythonでデスクトップアプリケーションを作成している方には非常に便利なライブラリです。ぜひPlyerを利用してみてください。