Macのデスクトップ通知をPythonから表示する
Macの通知をPythonスクリプトから出したい局面があったので、
- AppleScriptをコマンドで実行する
- 上記のコマンドをPythonから実行する
という流れで作成しました。
AppleScriptでデスクトップ通知を表示する
AppleScriptでは、
display notification "こんにちは世界"
でデスクトップ通知を表示できます。下図では、ScriptEditor.appから実行しています。
コマンドからAppleScriptを実行する
osascript
コマンドを使用します。
terminal.appにて、
$ osascript -e 'display notification "こんにちは世界"'
で、先程と同じ結果が得られます。
Pythonスクリプト内でコマンドを呼び出す
os
モジュールのsystem
メソッドの引数に、前述のコマンドを文字列として渡すことで実行できます。
import os
os.system("osascript -e 'display notification \"こんにちは世界\"'")
実行環境がMacのときだけ上記の処理を実行したい
PythonスクリプトがMac以外の環境でも実行される可能性がある場合、デスクトップ通知の表示は環境によっては行わないようにする必要が出てきます。
Pythonの標準ライブラリにplatformというモジュールがあるので、こちらを利用しました。
platform.system()
を実行すると、システムの名前が'Linux'
, 'Darwin'
, 'Java'
, 'Windows'
のような文字列で返ってきます。不明な場合は空文字が返ってきます。
まとめ
以上をまとめると次のようになりました。
import os
from platform import system
pf = system()
if pf == "Darwin":
os.system("osascript -e 'display notification \"こんにちは世界\"'")
今後の展望
通知が「スクリプトエディタ」発になっているので、できれば変更したい。
環境
- macOS 10.15.6
- zsh 5.7.1 (x86_64-apple-darwin19.0)
- Python 3.8.0
Reference
Author And Source
この問題について(Macのデスクトップ通知をPythonから表示する), 我々は、より多くの情報をここで見つけました https://qiita.com/sahara/items/93bbd44292d8465fc60e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .