【Python】タスクトレイにアプリを常駐させる:pystrayで定期的に実行

時計 2022.05.17 / 時計

【Python】タスクトレイにアプリを常駐させる:pystrayで定期的に実行

本記事ではPythonpystrayを利用して、タスクトレイにアプリケーションを常駐させる方法について解説していきます。

バックグラウンドで常にアプリを起動させておきたいときや、定期的に処理を実行させたい場面は多々あるかと思います。

そのようなPythonによるアプリケーションを作成する場合、pystrayを使用すると簡単に作成することができます。

本記事を通して、タスクトレイに常駐するアプリを開発できるようにしましょう。

pystray

pystrayとは

pystrayとはPythonで作成したアプリケーションをタスクトレイに常駐させることができるモジュールです。

タスクトレイとは画面右下にあるバックグラウンドで動作しているソフトを表示する領域です。

Windows:タスクトレイ

各アプリのアイコンが表示され、アイコンをクリックして表示したメニューから動作を選択できます。

tkinterで作成するGUIアプリケーションとpystrayを組み合わせることで、様々なことに応用できる柔軟なGUIアプリが作成できます。tkinterについて詳しくは以下記事をご参照ください。

私の場合

常時バックグラウンドでプログラムを走らせたい場合や、アプリのWindowをユーザーが閉じても裏で動かしておきたい場合、定期的に処理を実行させたい場合などにpystrayでアプリを作成しています

インストール

pystrayは標準でインストールされていないため、pipコマンドでインストールしましょう。

pip install pystray

現在(2022年5月)ではpystray-0.19.3がインストールされます。最新情報は以下PyPIをご確認ください。

PyPI - pystray

pystray:タスクトレイにアプリを常駐させる

タスクトレイに表示するアイコン作成

タスクトレイに常駐させるアプリの作成にはpystray.Icon()メソッドを使用します。

構文

pystray.Icon(name, icon=None, title=None, menu=None)

パラメーター 説明
name アイコンの名前。アイコンを識別するためにシステムによって使用される
icon アイコンの画像。PIL.Image.Imageオブジェクトを指定
title アイコンのタイトル
menu ポップアップメニューを指定
PILとは

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()メソッドで走らせます。上記コードを実行させると次図のようにアイコンがタスクトレイに表示されます。

python:pystrayによるタスクトレイのアプリ

メニューの作成

タスクトレイに常駐させたアイコンが右クリックされたときにポップアップ表示されるメニューは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()
python:pystrayによるタスクトレイのアプリのメニュー

上記コードからわかるように、Menu()の引数に表示するメニューアイテムを指定します。そして各メニューアイテムはMenuItem()で作成します。MenuItem()の第一引数には表示するテキスト、第二引数にクリックされたときに実行する関数を指定します。

またアプリを停止させるにはstop()メソッドを使用します。

まとめ

本記事「【Python】タスクトレイにアプリを常駐させる:pystrayで定期的に実行」はいかがでしたか。

ここではpystrayの基本的な使用方法を解説してきました。まずは実際に使ってみて、タスクトレイに常駐するアプリケーションをPythonで開発してみてください。