Zenity с несколькими вариантами выбора с клавиатуры

Я искал сценарий zenity, который предлагал бы выбор между несколькими командами (варианты выхода, программы). Если посмотреть на сценарий, обсуждаемый здесь (который использует параметр --radiolist), я заметил, что он предоставляет список параметров, которые нельзя выбрать с клавиатуры.

Но тот, который я нашел здесь может сделать именно это, поэтому я хочу поделиться им здесь. Я думаю, что это полезно.

3
задан 5 December 2017 в 17:08

2 ответа

Общий вид скрипта (с UPPERCASE для редактируемых записей):

#!/bin/bash ask=`zenity --list --title="WHATEVER Options" --column="0" "OPTION1" "OPTION2" "OPTION3" "OPTION4" --width=100 --height=300 --hide-header` if [ "$ask" == "OPTION1" ]; then COMMAND_FOR_OPTION1 fi if [ "$ask" == "OPTION2" ]; then COMMAND_FOR_OPTION2 fi if [ "$ask" == "OPTION3" ]; then COMMAND_FOR_OPTION3 fi if [ "$ask" == "OPTION4" ]; then COMMAND_FOR_OPTION4 fi exit 0

Когда окно открывается, опция еще не выбрана. Чтобы выбрать (то есть, прежде чем нажимать Enter для применения):

использовать первую букву (и стрелки, если более одной записи начинается с этой буквы) или первые буквы любой буквы (это любая клавиша, кроме Enter, Backspace, Esc и т. Д.), Чтобы выбрать первую запись и стрелки вверх для остальных.

использовать первую букву (и стрелки, если более одной записи начинается с этой буквы) или первые буквы

По умолчанию текст «Выбрать элементы из списка ниже» можно отредактировать, используя опцию --text="Your text here"; цвет и шрифт можно изменить, как указано .

2
ответ дан 18 July 2018 в 01:48

Общий вид скрипта (с UPPERCASE для редактируемых записей):

#!/bin/bash ask=`zenity --list --title="WHATEVER Options" --column="0" "OPTION1" "OPTION2" "OPTION3" "OPTION4" --width=100 --height=300 --hide-header` if [ "$ask" == "OPTION1" ]; then COMMAND_FOR_OPTION1 fi if [ "$ask" == "OPTION2" ]; then COMMAND_FOR_OPTION2 fi if [ "$ask" == "OPTION3" ]; then COMMAND_FOR_OPTION3 fi if [ "$ask" == "OPTION4" ]; then COMMAND_FOR_OPTION4 fi exit 0

Когда окно открывается, опция еще не выбрана. Чтобы выбрать (то есть, прежде чем нажимать Enter для применения):

использовать первую букву (и стрелки, если более одной записи начинается с этой буквы) или первые буквы любой буквы (это любая клавиша, кроме Enter, Backspace, Esc и т. Д.), Чтобы выбрать первую запись и стрелки вверх для остальных.

использовать первую букву (и стрелки, если более одной записи начинается с этой буквы) или первые буквы

По умолчанию текст «Выбрать элементы из списка ниже» можно отредактировать, используя опцию --text="Your text here"; цвет и шрифт можно изменить, как указано .

2
ответ дан 24 July 2018 в 17:27
  • 1
    Можно ли использовать аналогичный подход для kdialog? Я предполагаю, что вместо удобного --list придется использовать --combobox? – DK Bose 5 December 2017 в 17:02
  • 2
    @DKBose - извините, я не использую kdialog. Кроме того, я не создал сценарий, просто поделился им здесь. – cipricus 5 December 2017 в 17:08
  • 3
    В любом случае, очень ценится. Я буду играть с kdialog, так как это «зенит». для KDE. – DK Bose 5 December 2017 в 17:18
  • 4
    [ не имеет оператора ==. Используйте single = для сравнения строк или [[, если вы планируете сделать его bash-специфичным. Лучше всего было бы использовать инструкцию case. Я бы стал короче и избежал ошибок [ – Sergiy Kolodyazhnyy 6 December 2017 в 03:31
  • 5
    Кроме того, вместо замены используйте команду substitution $(...). Это легче вложить и избежать котировок – Sergiy Kolodyazhnyy 6 December 2017 в 03:32

Другие вопросы по тегам:

Похожие вопросы: