Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Récupération informations saisies dans un widget

2 réponses
Avatar
Jean Moser
Je vois deux méthodes principales (il y en sûrement d'autres) de saisie:
-premièrement la méthode raw_input qui a pour effet de stopper
le programme et d'attendre que l'utilisateur procède à une saisie
-deuxièmement la saisie par widget.

C'est là que je bute sur une difficulté.Voici un petit bout de code tiré
de l'ouvrage de Swinnen (p.89):
from Tkinter import *
fen1 = Tk()
txt1 = Label(fen1,text = blabla)
entr1 = Entry(fen1)
txt1.grid(row=0)
entr1.grid(row= 0,column=1)

On obtient alors une fenêtre avec, en lère colonne, le txt1 puis
un champ vide en deuxième colonne.
Il est loisible de procéder alors à une saisie dans ce champ puis de
retourner dans Python Shell en écrivant
a = entr1.get()
On récupère ainsi ce qui a été saisi.

Ceci n'est pas une bonne façon de procéder. Il faudrait que, comme
dans la méthode raw_input, le programme stoppe puis que l'on procède
à la saisie.Comment faire ?
Dans un exemple de Deitel ("How to programm, p. 602), tous les champs sont
saisis, dans un widget à la queue-leu-leu au moyen d'une boucle for. Je
n'ai pas réussi à comprendre comment il procède à la saisie des données.
Il procède au moyen d'une commande
self.entries[Prénom].get()
Self.entries est un dictionnaire qui est vide au début du programme.
J'ai essayé de faire tourner cet exemple mais sans succès. A vrai dire
je l'ai simplifié en ne travaillant pas avec des classes.Donc jai utlisé une
commande entries[Prénom].get()

Jean Moser
--
Article posté via l'accès Usenet http://www.mes-news.com
Accès par Nnrp ou Web

2 réponses

Avatar
Eric Brunel
Jean Moser wrote:
Je vois deux méthodes principales (il y en sûrement d'autres) de saisie:
-premièrement la méthode raw_input qui a pour effet de stopper
le programme et d'attendre que l'utilisateur procède à une saisie
-deuxièmement la saisie par widget.

C'est là que je bute sur une difficulté.Voici un petit bout de code tiré
de l'ouvrage de Swinnen (p.89):
from Tkinter import *
fen1 = Tk()
txt1 = Label(fen1,text = blabla)
entr1 = Entry(fen1)
txt1.grid(row=0)
entr1.grid(row= 0,column=1)

On obtient alors une fenêtre avec, en lère colonne, le txt1 puis
un champ vide en deuxième colonne.
Il est loisible de procéder alors à une saisie dans ce champ puis de
retourner dans Python Shell en écrivant
a = entr1.get()
On récupère ainsi ce qui a été saisi.

Ceci n'est pas une bonne façon de procéder. Il faudrait que, comme
dans la méthode raw_input, le programme stoppe puis que l'on procède
à la saisie.Comment faire ?


En fait, ce n'est pas vraiment la bonne question... Contrairement à la méthode
utilisant raw_input, qui est séquentielle, tous les widgets sont affichés
ensemble. Donc, en supposant qu'il y ait plusieurs champs, l'utilisateur peut
les renseigner dans n'importe quel ordre. Donc, la bonne question serait plutot:
"comment fait l'utilisateur pour indiquer qu'il a fini de remplir le formulaire?"

La réponse usuelle est: "via un bouton" (genre OK, pour rester traditionnel...)

Voilà un exemple:

---------------------------------------------------------------------
from Tkinter import *

root = Tk()

## Les variables pour les entrées
varPrenom = StringVar()
varNom = StringVar()

## Le formulaire graphique
Label(root, text='Prénom : ').grid(row=0, column=0, sticky='w')
Entry(root, textvariable=varPrenom).grid(row=0, column=1, sticky='w')
Label(root, text='Nom : ').grid(row=1, column=0, sticky='w')
Entry(root, textvariable=varNom).grid(row=1, column=1, sticky='w')

## La fonction de traitement
def traitement():
print "Bonjour, %s %s!" % (varPrenom.get(), varNom.get())

## Le bouton de fin de saisie
Button(root, text='OK', command=traitement).grid(row=2, column=0, columnspan=2)

## C'est parti
root.mainloop()
---------------------------------------------------------------------

Le traitement n'est donc pas fait séquentiellement, "dans la foulée" de la
saisie, mais dans une fonction à part, appelée via un bouton. C'est la façon de
faire "traditionnelle" dans les applis avec GUI.

[snip]

HTH
--
- Eric Brunel <eric (underscore) brunel (at) despammed (dot) com> -
PragmaDev : Real Time Software Development Tools - http://www.pragmadev.com

Avatar
anonyme
fais un binding pour l'entry avec la touche "Return".