インストール
pip install plyer
サンプルコード
from plyer import notification
notification.notify(title="タイトル",message="テスト",app_name="アプリ名",timeout=1)
macOSの場合は以下が必要
pip install git+http://github.com/kivy/pyobjus/
それでも私の環境(BigSur)では、以下のようなエラーが発生した。
File "/Users/user_name/opt/anaconda3/envs/py38/lib/python3.8/site-packages/plyer/platforms/macosx/notification.py", line 38, in _notify
usrnotifctr.setDelegate_(self)
通知機能に関しては以下のPull Requestが本稿執筆時点でOpen状態であった。Apple Scriptでの対応が提案されている。(コメントによると、NSUserNotificationCenterの廃止により、Mojave+で問題が発生しているらしい)
ひとまずは、このプルリクを自分の環境に適用して対応する。エラーの発生があるファイルパスを確認し、
/Users/user_name/opt/anaconda3/envs/py38/lib/python3.8/site-packages/plyer/platforms/macosx/
notification.py の内容を以下で置き換える。
'''
Module of MacOS API for plyer.notification.
'''
from plyer.facades import Notification
import os
class OSXNotification(Notification):
'''
Implementation of MacOS notification API.
'''
def _notify(self, **kwargs):
title = kwargs.get('title', '')
message = kwargs.get('message', '')
app_name = kwargs.get('app_name', '')
sound_name = 'default'
# app_icon, timeout, ticker are not supported (yet)
title_text = f'with title "{title}"' if title != '' else ''
subtitle_text = f'subtitle "{app_name}"' if app_name != '' else ''
soundname_text = f'sound name "{sound_name}"'
notification_text = f'display notification "{message}" {title_text} {subtitle_text} {soundname_text}'
os.system(f"osascript -e '{notification_text}'")
def instance():
'''
Instance for facade proxy.
'''
return OSXNotification()
plyer/notification.py at 4b07158828dc50ca095de3156e43d9b4369de7b0 · kivy/plyer · GitHubより、引用。作者の方、プルリク中の方に感謝。