リスト表示する。
zenity --list
$ zenity --help-list 用法: zenity [オプション...] 一覧ダイアログのオプション --list 一覧ダイアログを表示する --text=TEXT ダイアログに表示する文字列を指定する --column=COLUMN 列見出しを指定する --checklist 先頭の列にチェックボックスを使用する --radiolist 先頭の列にラジオボタンを使用する --imagelist 先頭の列に画像を使用する --separator=SEPARATOR 出力を区切る文字を指定する --multiple 複数行を選択可能にする --editable テキストを変更可能にする --print-column=NUMBER 特定の列を出力する (デフォルトは '1'。'ALL' ですべての列を出力) --hide-column=NUMBER 指定した列を隠す --hide-header 列見出しを隠す --mid-search デフォルトの検索動作を変更し、テキストの先頭ではなく途中からでも検索できるようにする
書式
--list
は最低でもひとつの--column
を指定せねば使用できない- 書式:
--column 列名 1行目値 2行目値 3行目値 ...
- 複数列をつくる場合:
--column 列A --column 列B --column 列C 1行A列値 1行B列値 1行C列値 2行A列値 2行B列値 2行C列値 ...
- 書式:
--column
$ zenity --list --column=列名 値1 値2 値3 値2
key | 説明 |
---|---|
↑ , ↓ |
フォーカス移動 |
Space | 決定 |
--hide-header
1列しかないとき、普通はヘッダ表示しない。
$ zenity --list --hide-header --column=列名 値1 値2 値3
--text
デフォルト表示の一部を変更する。
zenity --list --hide-header --text "選択してください。" --column=列名 値1 値2 値3
--hide-text
コマンドが欲しかった--title
コマンドが欲しかった(タイトルバーのテキスト変更)
複数の列
zenity --list \ --column=列名A --column=列名B --column 列名C \ 値A1 値B1 値C1 \ 値A2 値B2 値C2 \
TSVで書くと以下。
列A 列B 列C 値A1 値B1 値C1 値A2 値B2 値C2
- 選択した行の1列目が返ってくる
--checklist
$ zenity --list --checklist --column check --column 列名 TRUE 値1 FALSE 値2 TRUE 値3
- 以下のような形式しか作れない
- 1列目: チェックボックス
- 2列目: 任意テキスト
3列目以降はつくれない。
また、以下のような問題点がある。
- フォーカス表示されない(背景青色にならない)
- チェックボックスをクリックする必要がある(隣の列をクリックしてもチェックされない)
特にフォーカスが表示されないのが致命的。チェックリストとして使い物にならないレベル。
--radiolist
$ zenity --list --radiolist --column check --column 列名 TRUE 値1 FALSE 値2 FALSE 値3
--imagelist
$ zenity --list --imagelist --column img img1.png img2.png img3.png ...
$ find /usr/share/icons/PiX/32x32/actions -maxdepth 1 -type l -o -type f | zenity --list --imagelist --column img
- タイル形式に並べるようにできたら良かったのに
- Grid形式でファイルサイズなど表示できれば良かったのに
選択
--multiple
Ctrl
キー+クリックで複数行選択できる- 区切り文字:
|
$ zenity --list --multiple --column=列名A --column=列名B --column 列名C 値A1 値B1 値C1 値A2 値B2 値C2 値A3 値B3 値C3 値A1|値A3
--separator
区切り文字を変更する。
$ zenity --list --multiple --separator "\n" --column=列名A --column=列名B --column 列名C 値A1 値B1 値C1 値A2 値B2 値C2 値A3 値B3 値C3 値A1 値A3
$ $ zenity --list --multiple --separator "\t" --column=列名A --column=列名B --column 列名C 値A1 値B1 値C1 値A2 値B2 値C2 値A3 値B3 値C3 値A1 値A3
戻り値
$ zenity --list --column No --column code --column name 0 en 英語 1 ja 日本語 0
- 選択した行の一列目が返る
--print-column
指定した列を返す。(デフォルトは1
)
$ zenity --list --print-column=2 --column No --column code --column name 0 en 英語 1 ja 日本語 en
--hide-column
指定した列を非表示にする。
$ zenity --list --hide-column 1 --print-column=2 --column No --column code --column name 0 en 英語 1 ja 日本語 en
編集
--editable
$ zenity --list --text 選択してください。 --editable --column=列名 値1 値2 値3
編集させる意味がわからない。何が嬉しいの? 編集した項目を戻り値として受け取れるが、選択する必要がある。選択しなかったら編集した値は取得できない。まとめて編集できるメリットがあるUIなのに、選択しないとデータを受け取れない。一体どんな場面で使うのか謎。
ファイルと紐付けてデータバインディングできたら有意義だった。特にTSV編集できたらよかったのに。
前回まで
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13
- bash 4.4.12
- zenity 3.28.1
$ uname -a Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux