Ajouter un bouton a yad

xunil2003 Messages postés 766 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -

Bonjour,

Avec yad j'ai besoin d'ajouter un bouton Aide, je n'y arrive pas

fonction_test(){
VALEUR=$1
echo "VALEUR : $VALEUR"
case $VALEUR in
1)
    echo "1"
;;
*)
    echo "Erreur"
;;
esac
}
export -f fonction_test


retour=$(yad --form  --width=900 --height=300 --field=:LBL --field="Archive":RO --field="Nom image disque : '" --field="Taille archive" --field="Unité de mesure":CB --field="Point de montage":CDIR --field="Systeme de fichier":CB --field="Aide":btn --field="sudo":CHK    "Veuillez completer les champs" "$ARCHIVE" "$NOM_IMAGE_DISQUE_ISO" "$taille_archive" "$TABLEAU_UNITE_DE_MESURE2" "$POINT_DE_MONTAGE" "$TABLEAU_SYSTEME_DE_FICHIER" "sh -c 'fonction_test 1'" "TRUE") #"${TABLEAU_UNITE_DE_MESURE[@]}!"
        if [ "$?" != "0" ] ; then
            echo "Annuler par l'utilisateur $USER"
            exit 0
        fi
        echo "$retour"


Bash me retour :

sh: 1: fonction_test: not found

Merci d'avance pour vos avis et conseilsLinux / Firefox 136.0

A voir également:

2 réponses

mamiemando Messages postés 33874 Date d'inscription   Statut Modérateur Dernière intervention   7 902
 

Bonjour

Selon cette page, tu dois coupler ton bouton avec une commande shell. Si tu souhaites faire appel à une fonction shell, il faut l'exporter et l'appeler au travers de bash -c.

Comme le montre cet exemple

function about_dlg() {
  yad --about \
    --window-icon=gtk-about \
    --image=gtk-preferences \
    --authors="Ingemar Karlsson" \
    --license="GPL3" \
    --comments="iDesklnk is a simple iDesk desktop icon Creator/Editor." \
    --copyright="Copyright (c) 2023 Ingemar Karlsson" \
    --pversion="$PVERSION" \
    --pname="iDesklnk" \
    --button="Close!gtk-close":1
}
export -f about_dlg

RESULT=$(yad --form \
  --window-icon=gtk-preferences \
  --align=right \
  --width=150 \
  --mouse \
  --title="iDesk icon configurator" \
  --button="About!gtk-about":"bash -c about_dlg" \
)

ret=$?

Bonne chance

0
Utilisateur anonyme
 
Bonjour !
L'IA de Bobot est là pour vous aider !
Il semble que votre fonction shell n'est pas reconnue au moment de l'exécution de votre script. C'est probablement dû à l'environment dans lequel la fonction est appelée. L'option 'sh -c' crée un nouveau shell sans importer les fonctions du shell actuel.

Une solution serait d'inclure le corps de la fonction directement dans la commande appelée par le bouton, ou de déplacer la définition de la fonction dans un fichier séparé que vous sourcez dans votre script principal.

Voici comment vous pourriez utiliser la première méthode :

```
retour=$(yad --form --width=900 --height=300 --field=:LBL --field="Archive":RO --field="Nom image disque : '" --field="Taille archive" \
--field="Unité de mesure":CB --field="Point de montage":CDIR --field="Systeme de fichier":CB --field="Aide":btn --field="sudo":CHK \
"Veuillez completer les champs" "$ARCHIVE" "$NOM_IMAGE_DISQUE_ISO" "$taille_archive" "$TABLEAU_UNITE_DE_MESURE2" "$POINT_DE_MONTAGE" \
"$TABLEAU_SYSTEME_DE_FICHIER" "sh -c 'VALEUR=$1; echo "VALEUR : $VALEUR"; case $VALEUR in 1) echo "1" ;; *) echo "Erreur" ;; esac' 1" "TRUE")
```

Sinon, vous pouvez définir votre fonction dans un autre script shell, par exemple `functions.sh`, et l'inclure dans votre script principal en utilisant `source functions.sh` ou `. ./functions.sh` avant d'appeler votre fonction.

0