Interfaces utilisateur et rapports statistiques avec R et Sas
Introduction
Chapitre 1. Environnement de travail
Chapitre 2. Le langage R
Chapitre 3. Rapports statistiques
Chapitre 4. Interfaces utilisateur
4.1. La librairie tcltk
4.1.1. Introduction
4.1.2. Zones de texte
4.1.3. Zones de liste
4.2. Les menus de Rcommander
4.3. La librairie Rpad
4.4. Exercices
Chapitre 5. Bases de données et langage Sql
Annexe A : une applette Java
Annexe B : le logiciel Sas
Page d'accueil Table des matières Niveau supérieur Page précédente Bas de la page Page suivante Démarrage du logiciel Webographie du module Glossaire du module

4.1.2. Zones de texte

Nous allons construire une première boîte de dialogue saisissant un nombre et affichant le carré de ce nombre quand on clique sur le bouton OK.

Le programme R ayant permis sa réalisation a la forme suivante :

library(tcltk)
# Création de la boite de dialogue (nommée formu)
formu = tktoplevel()
tktitle(formu) = "Calcul du carre d'un nombre"
# fonctions associées aux boutons OK et Quitter
executer = function() {
	# à compléter...
}
quitter = function() {	tkdestroy(formu) }
# creation des composants : label_nombre, zone_nombre, bouton_ok...
label_nombre = tklabel(formu, text="nombre : ")
zone_nombre = tkentry(formu)
bouton_ok = tkbutton(formu, text="OK", command=executer)	
	# associé à la fonction executer
bouton_quitter = tkbutton(formu, text="Quitter", command=quitter)	
	# associé à la fonction quitter
# positionnement des composants sur 2 lignes
tkgrid(label_nombre, zone_nombre)
tkgrid(bouton_ok, bouton_quitter)
# affichage de la boite de dialogue
tkfocus(formu)

Cette boîte de dialogue comporte 4 composants : un label (label_nombre), une zone de texte (zone_nombre) et deux boutons de commandes (bouton_ok et bouton_quitter). Ces composants sont affichés sur 2 lignes (car 2 appels à la fonction tkgrid). Les boutons OK et Quitter sont associés aux fonctions executer et quitter. La fonction quitter ferme la fenêtre. La fonction executer, dont voici le code complet, calcule le carré du nombre entré dans la zone de texte (zone_nombre), puis l'affiche dans la console R (print) et dans une fenêtre graphique (tkmessageBox).

# fonction associée au bouton OK
executer = function() {
	# recuperation du nombre entré 
	nombre = as.numeric( tkget(zone_nombre) ) 
	# calculs 
	carre = nombre * nombre
	reponse = paste("le carre de", nombre, "vaut", carre)
	# affichage dans la console R et dans une boite de message
	print( reponse )
	tkmessageBox(message=reponse)
}

Il ne faut pas confondre la zone de texte (zone_nombre) avec sa valeur (nombre) calculée avec la fonction tkget.

Si vous souhaitez réutiliser souvent une boîte de dialogue (j'en doute pour celle-là !), il peut être conseillé de mettre tout le code dans une fonction, d'enregistrer cette fonction dans un fichier texte et de télécharger ce fichier texte en cas de besoin.

# définition d'une fonction pour faciliter la réutilisation
zoneTexte = function() {
	formu = tktoplevel()
	tktitle(formu) = "Calcul du carre d'un nombre"
	...
	tkfocus(formu)
}

Vous pouvez télécharger le fichier automatiser.R qui contient la définition de cette fonction, le sauvegarder sur votre disque dur, puis enfin exécuter son contenu (commande sourcer du code R). Ensuite, il ne vous reste plus qu'à appeler cette fonction :

# appel de la fonction pour ouvrir la boîte de dialogue
zoneTexte() 
Page d'accueil Table des matières Niveau supérieur Page précédente Haut de la page Page suivante Démarrage du logiciel Webographie du module Glossaire du module