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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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()
## 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
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()
## 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
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()
## 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
anonyme
fais un binding pour l'entry avec la touche "Return".
fais un binding pour l'entry avec la touche "Return".