entry et fichier

Le
alainL
Je bataille depuis .. l'an dernier avec "entry":
_______________________________________________________________________
### je veux afficher le contenu du fichier -ça, ça marche- et éventuellement
pouvoir y ajouter ou enlever qqchose -ça marche encore en saisie

f = open(ficjour,'r')

entr1= Entry(fen1, bg='yellow')
notes = f.readlines()
entr1Var = StringVar()
entr1.configure(textvariable=entr1Var)
entr1Var.set(notes)
f.close()



entr1.place(x55,y )


### et enregistrer la totalité de l'affichage - là, ça ne va plus, tout
disparaît: à la lecture suivante, "ficjour" est vide :-(((
### si l'entry recoit une donnee, enregistrer (si le fichier n'existe pas,
le créer)
if notes <>"" :
f=open(ficjour,'w')
entr1.insert(0,notes),'w'
f.close
________________________________________________________________

cerise sur le gâteau, comment enlever les [ ] ?

Merci à l'avance et bonne année !
alainL
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Eric Brunel
Le #664913
On Thu, 03 Jan 2008 16:29:59 +0100, alainL wrote:

Je bataille depuis .. l'an dernier ... avec "entry":
_______________________________________________________________________
### je veux afficher le contenu du fichier -ça, ça marche- et
éventuellement pouvoir y ajouter ou enlever qqchose -ça marche encore en
saisie...

f = open(ficjour,'r')

entr1= Entry(fen1, bg='yellow')
notes = f.readlines()
entr1Var = StringVar()
entr1.configure(textvariable=entr1Var)
entr1Var.set(notes)
f.close()

..................

entr1.place(x55,y )


Une remarque en passant: une Entry est particulièrement peu adaptée à la
modification d'un fichier en entier, vu qu'elle est mono-ligne...

### et enregistrer la totalité de l'affichage - là, ça ne va plus, tout
disparaît: à la lecture suivante, "ficjour" est vide :-(((
### si l'entry recoit une donnee, enregistrer (si le fichier n'existe
pas, le créer)
if notes <>"" :
f=open(ficjour,'w')
entr1.insert(0,notes),'w'


??? D'où sort ce bout de code?

Pour info, voilà ce qu'il fait:
1/ L'appel de entr1.insert insère le contenu de la variable chaîne "notes"
dans l'Entry à la position 0.
2/ Un tuple à deux éléments est construit, le premier étant le résultat de
l'appel de entr1.insert (qui ne renvoie rien, donc None) et la chaîne 'w'.
3/ Ce tuple est poubellisé, puisque le code n'en fait rien.

Je peux me tromper, mais je n'ai pas l'impression que c'est voulu, non? ;-)

Pour écrire dans un fichier, la méthode write de l'objet fichier me semble
plus appropriée. De plus, étant donné que l'Entry est attachée à une
StringVar, nul besoin de manipuler l'Entry elle-même. Donc, le code que
j'aurais écrit aurait plutôt été:

f.write(entr1Var.get())

f.close


Ce code ne fait rien, la méthode "close" n'étant pas appelée... =>
f.close()

________________________________________________________________

cerise sur le gâteau, comment enlever les [ ] ?


De où?

Merci à l'avance et ... bonne année !


Pareil! HTH
--
python -c "print ''.join([chr(154 - ord(c)) for c in
'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"

alainL
Le #664912
"Eric Brunel" discussion :
On Thu, 03 Jan 2008 16:29:59 +0100, alainL wrote:

Je bataille depuis .. l'an dernier ... avec "entry":
_______________________________________________________________________
### je veux afficher le contenu du fichier -ça, ça marche- et
éventuellement pouvoir y ajouter ou enlever qqchose -ça marche encore en
saisie...
.................


.place(x55,y )

Une remarque en passant: une Entry est particulièrement peu adaptée à la
modification d'un fichier en entier, vu qu'elle est mono-ligne...

### et enregistrer la totalité de l'affichage - là, ça ne va plus, tout
disparaît: à la lecture suivante, "ficjour" est vide :-(((
### si l'entry recoit une donnee, enregistrer (si le fichier n'existe
pas, le créer)
Pour écrire dans un fichier, la méthode write de l'objet fichier me semble

plus appropriée. De plus, étant donné que l'Entry est attachée à une
StringVar, nul besoin de manipuler l'Entry elle-même. Donc, le code que
j'aurais écrit aurait plutôt été:

f.write(entr1Var.get())



cerise sur le gâteau, comment enlever les [ ] ?


De où?


========================================================================= Merci. Les [ ] de la "boite" entry ...


f = open(ficjour,'r')
entr1= Entry(fen1, bg='yellow')
notes = f.readlines()
entr1Var = StringVar()
entr1.configure(textvariable=entr1Var)
entr1Var.set(notes)
f.close()
.................
entr1.place(x55,y )



..............................................
if notes <>"" :
f=open(ficjour,'w')
f.write(entr1Var.get())

f.close()

Le contenu de la ligne de ficjour s'affiche ['azerty'], la saisie suppl
aussi... mais au relancement du prg, la ligne est devenue ["['azerty']"] pas
trace du supplement sauf les [''] et le éventuel.

alainL


alainL
Le #664909
"Eric Brunel" discussion :
On Thu, 03 Jan 2008 16:29:59 +0100, alainL wrote:


Une remarque en passant: une Entry est particulièrement peu adaptée à la
modification d'un fichier en entier, vu qu'elle est mono-ligne...


Merci pour le conseil. J'ai trouvé et bricolé ça:
__________________________________________________
def valider():
affichage['text'] = textejour.get(1.0, END) # permet de vérifier, je le
virerai
f=open(ficjour,'w')
f.write(textejour.get(1.0, END))
f.close()
try:
f = open(ficjour,'r')
except IOError, e:
pass
else:
notes = f.readlines()
textejour = Text(fen1,bg='yellow',width7,height(,)
textejour.insert(END,notes)
affichage = Label(fen1)
validation = Button(fen1, text='valider', command=valider)
textejour.place(x50,y )
affichage.place(x50,y00)
validation.place(xE0,)
f.close()
__________________________________________________________
cerise sur le gâteau, comment enlever les [ ] ?


De où?
Du texte qui se trouve re-enregistré:

si je rentre < azerty > le contrôle me donne bien < un > mais l'ouverture
suivante redonnera < ['azertyn'] >

Mais bon, j'ai déjà fait un sacré progrès cette année :-)))

alainL


Eric Brunel
Le #664671
On Thu, 03 Jan 2008 18:43:48 +0100, alainL wrote:
"Eric Brunel" de discussion :
On Thu, 03 Jan 2008 16:29:59 +0100, alainL wrote:


Une remarque en passant: une Entry est particulièrement peu adaptée à
la modification d'un fichier en entier, vu qu'elle est mono-ligne...


Merci pour le conseil. J'ai trouvé et bricolé ça:
__________________________________________________
def valider():
affichage['text'] = textejour.get(1.0, END) # permet de vérifier,
je le virerai
f=open(ficjour,'w')
f.write(textejour.get(1.0, END))
f.close()
try:
f = open(ficjour,'r')
except IOError, e:
pass
else:
notes = f.readlines()
textejour = Text(fen1,bg='yellow',width7,height(,)
textejour.insert(END,notes)
affichage = Label(fen1)
validation = Button(fen1, text='valider', command=valider)
textejour.place(x50,y )
affichage.place(x50,y00)
validation.place(xE0,)
f.close()
__________________________________________________________


Le widget Text semble effectivement beaucoup plus adapté...

cerise sur le gâteau, comment enlever les [ ] ?


De où?
Du texte qui se trouve re-enregistré:

si je rentre < azerty > le contrôle me donne bien < un > mais
l'ouverture suivante redonnera < ['azertyn'] >


OK, je n'avais pas vu: le f.readlines() renvoie la *liste* des lignes du
fichier, pas son texte en entier. Pour ça, la méthode à utiliser est
simplement f.read().

HTH
--
python -c "print ''.join([chr(154 - ord(c)) for c in
'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"



Publicité
Poster une réponse
Anonyme