【Python】タスクトレイにアプリを常駐させる:pystrayで定期的に実行
2022.05.17 /
本記事ではPythonのpystrayを利用して、タスクトレイにアプリケーションを常駐させる方法について解説していきます。
バックグラウンドで常にアプリを起動させておきたいときや、定期的に処理を実行させたい場面は多々あるかと思います。
そのようなPythonによるアプリケーションを作成する場合、pystrayを使用すると簡単に作成することができます。
本記事を通して、タスクトレイに常駐するアプリを開発できるようにしましょう。
pystray
pystrayとは
pystrayとはPythonで作成したアプリケーションをタスクトレイに常駐させることができるモジュールです。
タスクトレイとは画面右下にあるバックグラウンドで動作しているソフトを表示する領域です。
各アプリのアイコンが表示され、アイコンをクリックして表示したメニューから動作を選択できます。
tkinterで作成するGUIアプリケーションとpystrayを組み合わせることで、様々なことに応用できる柔軟なGUIアプリが作成できます。tkinterについて詳しくは以下記事をご参照ください。
【Python】tkinterを使ったGUIアプリケーションの作成方法
常時バックグラウンドでプログラムを走らせたい場合や、アプリのWindowをユーザーが閉じても裏で動かしておきたい場合、定期的に処理を実行させたい場合などにpystrayでアプリを作成しています
インストール
pystrayは標準でインストールされていないため、pipコマンドでインストールしましょう。
pip install pystray
現在(2022年5月)ではpystray-0.19.3がインストールされます。最新情報は以下PyPIをご確認ください。
pystray:タスクトレイにアプリを常駐させる
タスクトレイに表示するアイコン作成
タスクトレイに常駐させるアプリの作成にはpystray.Icon()メソッドを使用します。
pystray.Icon(name, icon=None, title=None, menu=None)
パラメーター | 説明 |
---|---|
name | アイコンの名前。アイコンを識別するためにシステムによって使用される |
icon | アイコンの画像。PIL.Image.Imageオブジェクトを指定 |
title | アイコンのタイトル |
menu | ポップアップメニューを指定 |
PIL(Python Imaging Library)はPythonで画像処理を行う際に使うライブラリです。画像の切り抜き、画像の編集、サムネイルの作成などで使用します
引数のiconにはPILで開いた画像やPILで作成した画像を指定します。以下にpystrayのサンプルコードを記します。
from pystray import Icon, Menu, MenuItem
from PIL import Image
image = Image.open('E.ico')
icon = Icon(name='test', icon=image, title='pystray App')
icon.run()
pystrayで作成したアプリはrun()メソッドで走らせます。上記コードを実行させると次図のようにアイコンがタスクトレイに表示されます。
メニューの作成
タスクトレイに常駐させたアイコンが右クリックされたときにポップアップ表示されるメニューはpystray.Menu()とpython.MenuItem()で設定します。
以下にメニューを追加したサンプルコードを記します。
from pystray import Icon, Menu, MenuItem
from PIL import Image
def quit_app():
icon.stop()
def run_app():
pass
image = Image.open('E.ico')
menu = Menu(MenuItem('Quit', quit_app), MenuItem('Run', run_app))
icon = Icon(name='test', icon=image, title='pystray App', menu=menu)
icon.run()
上記コードからわかるように、Menu()の引数に表示するメニューアイテムを指定します。そして各メニューアイテムはMenuItem()で作成します。MenuItem()の第一引数には表示するテキスト、第二引数にクリックされたときに実行する関数を指定します。
またアプリを停止させるにはstop()メソッドを使用します。
まとめ
本記事「【Python】タスクトレイにアプリを常駐させる:pystrayで定期的に実行」はいかがでしたか。
ここではpystrayの基本的な使用方法を解説してきました。まずは実際に使ってみて、タスクトレイに常駐するアプリケーションをPythonで開発してみてください。