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

entry et fichier

4 réponses
Avatar
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(x=355,y=20)


### 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

4 réponses

Avatar
Eric Brunel
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+-'])"

Avatar
alainL
"Eric Brunel" a écrit dans le message de groupe de
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


Avatar
alainL
"Eric Brunel" a écrit dans le message de groupe 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()
__________________________________________________________
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


Avatar
Eric Brunel
On Thu, 03 Jan 2008 18:43:48 +0100, alainL
wrote:
"Eric Brunel" a écrit dans le message de groupe
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+-'])"