Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/11/2007, à 19:35

winael

[aide] utilisation de zenity --list et cut/grep

Bonjour à  tous

Je cherche à  créer un QCM avec zenity seulement je bloque avec les choix multiples justement.
J'utilise la fonction zenity --list --cheklist... qui me retourne une fois mes cases cochées, un truc du genre :

More pictures:More complete post:Create a forum for question queries

Bien evidement le but du jeu est de tester la string zenity, choix par choix
d'autre part est il possible de tester le nombre de choix ? (genre  je veux trois reponse, si l'eleve en donne plus, on donne 0 point à  la question, faut pas deconner non plus c'est trop facile sinon mad )
Merci d'avance de votre aide smile


Libre, non pas comme dans entrée libre, mais comme dans Liberté
(Bouyop)Mon PC c 1 MAC boulet ! G pas windows, donc je pe pas intaller linux !
(pankkake) Windows VISTA : Virus, Infections, Spyware, Trojans, Adware.
OPEN your mind, you'll discover a FREE world

Hors ligne

#2 Le 26/11/2007, à 20:42

Sleipnir

Re : [aide] utilisation de zenity --list et cut/grep

bsr,

Je vais peut être dire une bêtise, mais si tu mets la bonne réponse dans une variable que tu compares à  la réponse zenity ? Ca ne ferait pas ?

Hors ligne

#3 Le 26/11/2007, à 20:57

abetsic

Re : [aide] utilisation de zenity --list et cut/grep

Ben comme tu le dis, un coup de grep sur la chaà®ne de caractères renvoyés par zenity et tu peux savoir si l'utilisateur a donné une bonne réponse parmi celles cochées.
Pour compter le nombre de réponses tu peux faire un tr ':' '\n' | wc -l qui remplace les ":" par des retours à  la ligne puis compte le nombre de ligne.

Hors ligne

#4 Le 26/11/2007, à 21:48

winael

Re : [aide] utilisation de zenity --list et cut/grep

en fait je voudrais pouvoir donner un point par bonne réponse du style il a deux bonne réponse sur 3 je veux pas le pénalisé donc il a 2 à la question


Libre, non pas comme dans entrée libre, mais comme dans Liberté
(Bouyop)Mon PC c 1 MAC boulet ! G pas windows, donc je pe pas intaller linux !
(pankkake) Windows VISTA : Virus, Infections, Spyware, Trojans, Adware.
OPEN your mind, you'll discover a FREE world

Hors ligne

#5 Le 26/11/2007, à 21:56

abetsic

Re : [aide] utilisation de zenity --list et cut/grep

Utilises grep plusieurs fois de suite pour chaque bonne réponse différente possible. à chaque fois que grep renvoie quelque chose ou que le code de retour vaux 0 (le code de retour est dans la variable $?) tu peux incrémenter un compteur... Ça donnera le nombre de bonnes réponses données par l'utilisateur.

Hors ligne

#6 Le 26/11/2007, à 22:12

Alain.g

Re : [aide] utilisation de zenity --list et cut/grep

Salut
Zenity permet de choisir le séparateur de son choix via l'option --separator. Donc tu peux mettre "\n", " " ou ce que tu veux.

edit : après avoir testé, --separator="\n" marche en shell (/bin/sh), mais pas en bash... bizarre

Tu as tout intérêt à  utiliser un colonne cachée qui servira d'identifiant à  chaque réponse.

par exemple avec un numéro :

points=0;
while true ; do
q01=$(zenity --list --checklist --height=300 \
	--title="questionnaire" \
	--text="Quels sont les deux départements d'Alsace"\
	--column="" --column="" --column="Départements" \
	--hide-column=2 \
	--separator=" " \
	FALSE 01 "Gironde"\
	FALSE 02 "Meurthe et Moselle"\
	FALSE 03 "Bas-Rhin"\
	FALSE 04 "Savoie"\
	FALSE 05 "Vosges"\
	FALSE 06 "Haut-Rhin")
	
if [ `echo $q01 | wc -w` -ne 2 ] ; then
	zenity --error --text "vous devez choisir 2 réponses ! "
else
	bonnesreponses=`echo $q01 | tr ' ' '\n' | grep -c '03\|06'`
	points=$(($points+$bonnesreponses))
	break
fi
done
zenity --info --text "Vous avez un total de $points ! "

S'il y a moins ou plus de 2 réponses, on repose la question (c'est à  ça que sert la boucle while).
Et on compte le nombre de bonnes réponses avec grep et son option -c

Dernière modification par Alain.g (Le 28/11/2007, à 20:23)


Xubuntu Karmic !

Hors ligne

#7 Le 27/11/2007, à 01:09

winael

Re : [aide] utilisation de zenity --list et cut/grep

Merci Alain.g je vais tester ca demain je vous tiens au Jus smile


Libre, non pas comme dans entrée libre, mais comme dans Liberté
(Bouyop)Mon PC c 1 MAC boulet ! G pas windows, donc je pe pas intaller linux !
(pankkake) Windows VISTA : Virus, Infections, Spyware, Trojans, Adware.
OPEN your mind, you'll discover a FREE world

Hors ligne

#8 Le 27/11/2007, à 03:50

frafa

Re : [aide] utilisation de zenity --list et cut/grep

lo
Merci aussi à  Alain.g
hide-column , je ne connaissait pas smile
les --text "... !" a la fin pour moi passent pas obligé de mettre --text "... \!"

Dernière modification par frafa (Le 27/11/2007, à 03:50)

Hors ligne

#9 Le 28/11/2007, à 18:26

winael

Re : [aide] utilisation de zenity --list et cut/grep

J'ai un pb avec un des options de zenity concernant le message d'erreur
Tant que la condition de pas avoir donné le bon nombre de réponse n'est pas validée le script doit me retourner un message d'erreur

if [ `echo $q01 | wc -w` -ne 2 ] ; then
    zenity --error --text "vous devez choisir 2 réponses !"

Malheuresement en mode debuggage console voici le message d'erreur :

Cette option n'est pas disponible. Veuillez consulter --help pour toutes les utilisations possibles.

Autre question : J'aimerais que seulement lorsque l'eleve selectionne plus que le nombre de réponse que le message lui apparaisse et dans ce cas la je lui met 0 a la question et on passe à  la suite. Malheureusement j'ai un epu du mal a comprendre la l'argument

[ `echo $q01 | wc -w` -ne 2 ]

quelqu'un peut il me guider big_smile
merciiiii


Libre, non pas comme dans entrée libre, mais comme dans Liberté
(Bouyop)Mon PC c 1 MAC boulet ! G pas windows, donc je pe pas intaller linux !
(pankkake) Windows VISTA : Virus, Infections, Spyware, Trojans, Adware.
OPEN your mind, you'll discover a FREE world

Hors ligne

#10 Le 28/11/2007, à 18:39

frafa

Re : [aide] utilisation de zenity --list et cut/grep

-ne ==> inégalité, est different
wc -w ==> compte le nombre de mots

points=0;
while true ; do
q01=$(zenity --list --checklist --height=300 \
    --title="questionnaire" \
    --text="Quels sont les deux départements d'Alsace" \
    --column="" --column="" --column="Départements" \
    --hide-column=2 \
    --separator=" " \
    FALSE 01 "Gironde" \
    FALSE 02 "Meurthe et Moselle" \
    FALSE 03 "Bas-Rhin" \
    FALSE 04 "Savoie" \
    FALSE 05 "Vosges" \
    FALSE 06 "Haut-Rhin")
    
if [ `echo $q01 | wc -w` -ne 2 ] ; then
    zenity --error --text "vous devez choisir 2 réponses \!"
else
    bonnesreponses=`echo $q01 | tr ' ' '\n' | grep -c '03\|06'`
    points=$(($points+$bonnesreponses))
    break
fi
done
zenity --info --text "Vous avez un total de $points \!"

Hors ligne

#11 Le 28/11/2007, à 20:24

frafa

Re : [aide] utilisation de zenity --list et cut/grep

if [ `echo $q01 | wc -w` -gt 2 ] ; then 
#si est sup a 2 

elif [ `echo $q01 | wc -w` -ne 2 ] ; then
#si équivalent a 2

else
#sinon

fi

Dernière modification par frafa (Le 28/11/2007, à 20:26)

Hors ligne

#12 Le 29/11/2007, à 01:11

yleetiny

Re : [aide] utilisation de zenity --list et cut/grep

euh il y a beaucoup plus simple pour savoir le nombre d'éléments dans ta variable:
${#q01} est le nombre d'éléments de la variable $q01
après c'est qu'une question de lisibilité du code.
on peut même faire ta condition par

if [ "${#q01}" = "1" ] ; then
....

Ordinateurs : SONY VAIO C2Z/B & EEEPC 701
Merci de mettre [RESOLU] dans vos postes si le problème est réglé,
et Merci de partager vos expériences

Hors ligne

#13 Le 29/11/2007, à 01:37

Alain.g

Re : [aide] utilisation de zenity --list et cut/grep

yleetiny a écrit :

${#q01} est le nombre d'éléments de la variable $q01

Cela vaut pour les tableaux. Exemple: ${#q[*]}

Mais là  ce n'est pas le cas, ${#q01} donnerait le  nombre de caractères.
si q01="01 03 05" alors ${#q01} sera égal 8, alors qu'avec wc -w, cela donnera 3

Rien n'empêche d'utiliser les tableaux d'ailleurs...

Dernière modification par Alain.g (Le 29/11/2007, à 12:29)


Xubuntu Karmic !

Hors ligne

#14 Le 29/11/2007, à 12:37

yleetiny

Re : [aide] utilisation de zenity --list et cut/grep

ah oui, c vrai...j'avais oublié (j'utilise quasiment que des tableaux c'est pour cela)


Ordinateurs : SONY VAIO C2Z/B & EEEPC 701
Merci de mettre [RESOLU] dans vos postes si le problème est réglé,
et Merci de partager vos expériences

Hors ligne