読者です 読者をやめる 読者になる 読者になる

座敷牢日誌

都落ちした元SEがソフトウェアやネット関連のことを書いています

zenityをpythonから使う「PyZenity」

zenityというソフトウェアをよく使う。簡単なダイアログを表示するためのもので、例えば端末上で次のように入力して実行すると、メッセージが通知ダイアログになって出力される。

$ zenity --info --text="ダウンロードが完了しました"

他にもユーザからの入力やファイル・ディレクトリ選択するといったダイアログもあり、デスクトップで使う想定のシェルスクリプトに組み込むと効果的に使うことができる。

最近になってこのzenityをPythonから使うライブラリ「PyZenity」を試してみた。

PyZenityをインストールする

PyZenityのインストールはeasy_install、pipのどちらでもできると思うが、pipでインストールする場合は、以下のように実行する。

$ sudo pip install pyzenity

その後、pythonのインタラクティブシェルから、PyZenityをimportできればインストール成功。

import PyZenity

使い方

まともなドキュメント等を見つけられなかったので、インタラクティブシェル上の「help()」で使い方を確認した程度だが、シェルで実行するzenityとほぼ同じ。

エラーメッセージのダイアログを出力する。

import PyZenity
PyZenity.ErrorMessage(u"エラーです")

カレンダーダイアログで日付を入力させる。

import PyZenity
d = PyZenity.GetDate()
# datetime.dateの型で値が返される。

ファイル選択ダイアログ用のメソッドが「GetFilename」と「GetSavename」の2種類にわかれているあたり少し戸惑ったが、だいたいシェルから呼ぶ場合とほとんど同じように使える。

>>> dir(PyZenity)
['ErrorMessage', 'GetDate', 'GetDirectory', 'GetFilename', 'GetSavename',
'GetText', 'InfoMessage', 'List', 'Notification', 'PIPE', 'Popen', 'Progress',
'Question', 'TextInfo', 'Warning', '__all__', '__builtins__', '__doc__',
'__file__', '__name__', '__package__', 'chain', 'date', 'path', 'run_zenity',
'zen_exec']

dir()したところ、多分、単純にPopenで外部コマンドとしてzenityを呼び出しているだけなので、パフォーマンス的なメリットはあまりないと思う。まあ、簡単に使えるのがzenityの良さなので、そのあたりは気にしません。

広告を非表示にする