IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Probleme d'Entry avec tkinter


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Probleme d'Entry avec tkinter
    J'ai un petit bout de code qui fait appel a un fichier txt. A l'ouverture de la fenetre je souhaiterais qu'il le lise et affiche la valeur dans l'entry. Débutant en python et tkinter j'avoue qu'après avoir retourné le probleme dans tous les sens je seche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #!/usr/bin/python
    # -*- coding: cp1252 -*-
     
    from Tkinter import *
    import os
    import csv
     
    def ok():
        global fichier
        fichier = open('Relation.txt', 'w') 
        fichier.write(Relation.get())
        fichier.close()
     
    application = Tk()
    application.title("Relation")
    fichier = StringVar()
    barreEtat = Label(application, text="Ici bientôt un texte d'aide", bd=1, relief=GROOVE, anchor=W)
    barreEtat.pack(side=BOTTOM, fill=X)
     
    panneauSup = Frame(application, width=1000, height = 20, relief = FLAT, bg="#FFFF99")
    label1=Label(panneauSup, text='   RELATION   :  ', font = ('arial', '14'), bg="#FFFF99", width=10)
    label1.grid(row=0,column=0)
    Relation = Entry(panneauSup, textvariable=fichier, width=30)
    Relation.grid(row=0, column=1, sticky=W)
    panneauSup.pack(side=TOP, fill=BOTH, expand=False)
    bOk=Button(panneauSup, text='OK', fg='brown')
    bOk.grid(row=0,column=2,sticky=E)
    bOk.config(state=NORMAL, relief=RAISED, command=ok)
    application.mainloop()

  2. #2
    Membre averti Avatar de zabibof
    Inscrit en
    Février 2007
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 188
    Points : 344
    Points
    344
    Par défaut
    Euh... J'ai un p'tit problème de compréhension

    Donc, t'as un fichier, dedans il y a quelque chose, quand tu ouvres ta fenêtre (ou quand tu cliques sur le bouton ok? ), ton programme va dans ton fichier et lit ce qui y est écrit, ensuite ce que tu as lu dans ton fichier, tu l'affiches dans ton entry, c'est comme ça???

    Si c'est comme ça, ton problème se trouve ici:
    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    def ok():
        global fichier
        fichier = open('Relation.txt', 'w') 
        fichier.write(Relation.get())
        fichier.close()
    Dans cette fonction, tu fais une écriture, pas une lecture, donc grosso-modo, tu fais un read au lieu d'un write et tu ouvres le fichier en mode lecture et non en mode écriture

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par zabibof Voir le message
    Euh... J'ai un p'tit problème de compréhension

    Donc, t'as un fichier, dedans il y a quelque chose, quand tu ouvres ta fenêtre (ou quand tu cliques sur le bouton ok? ), ton programme va dans ton fichier et lit ce qui y est écrit, ensuite ce que tu as lu dans ton fichier, tu l'affiches dans ton entry, c'est comme ça???

    Si c'est comme ça, ton problème se trouve ici:
    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    def ok():
        global fichier
        fichier = open('Relation.txt', 'w') 
        fichier.write(Relation.get())
        fichier.close()
    Dans cette fonction, tu fais une écriture, pas une lecture, donc grosso-modo, tu fais un read au lieu d'un write et tu ouvres le fichier en mode lecture et non en mode écriture
    Bonjour
    Oui merci pour ta reponse
    Le def ok() sert pour la premiere fois uniquement a savoir creation du fichier s'il n'existe pas et enregistrement de l'entry. Maintenant ce que je souhaites realiser c'est qu'a l'ouverture du programme il lise le contenu du fichier et ensuite l'affiche dans l'entry.

  4. #4
    Membre averti
    Homme Profil pro
    Responsable du parc et des réseaux de télécommunication
    Inscrit en
    Mai 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable du parc et des réseaux de télécommunication
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2003
    Messages : 290
    Points : 388
    Points
    388
    Par défaut
    Bonjour,
    Ajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier.set(open('Relation.txt', 'r').read())
    .

  5. #5
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Je pense qu'il y a une grosse erreur dans ton code...

    Dans ta fonction ok() tu défini ""fichier"" comme global, ensuite comme un objet-fichier et pour finir comme un StringVar dans ton code principal...

    Là à mon avis il y a une grosse problème. Pour ce point je te conseille de reprendre le tuto de G. SWINNEN (page 112).


    Ensuite pour modifier une Entry je pense qu'il doit exister comme pour les Labels une méthode du type mon_entry.insert().
    Pour ça je te conseil l'utilisation de la faq, en particulier ici

    Je pense que tu devrais ensuite facilement t'en sortir.

    Bon courage et pense à la
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par pierjean Voir le message
    Bonjour,
    Ajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier.set(open('Relation.txt', 'r').read())
    .
    Bonjour, merci pour cette info mais je mets ca où.
    Je debute vraiment et la suis vraiment perdu.

  7. #7
    Membre averti
    Homme Profil pro
    Responsable du parc et des réseaux de télécommunication
    Inscrit en
    Mai 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable du parc et des réseaux de télécommunication
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2003
    Messages : 290
    Points : 388
    Points
    388
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    #!/usr/bin/python
    # -*- coding: cp1252 -*-
     
    from Tkinter import *
    import os
    import csv
     
    def ok():
        #global fichier    #inutile d'utiliser global
        fichier = open('Relation.txt', 'w') 
        fichier.write(Relation.get())
        fichier.close()
     
    application = Tk()
    application.title("Relation")
    texte=StringVar()
     
    barreEtat = Label(application, text="Ici bientôt un texte d'aide", bd=1, relief=GROOVE, anchor=W)
    barreEtat.pack(side=BOTTOM, fill=X)
     
    panneauSup = Frame(application, width=1000, height = 20, relief = FLAT, bg="#FFFF99")
    label1=Label(panneauSup, text='   RELATION   :  ', font = ('arial', '14'), bg="#FFFF99", width=10)
    label1.grid(row=0,column=0)
    Relation = Entry(panneauSup, textvariable=texte, width=30)
    Relation.grid(row=0, column=1, sticky=W)
    panneauSup.pack(side=TOP, fill=BOTH, expand=False)
    bOk=Button(panneauSup, text='OK', fg='brown')
    bOk.grid(row=0,column=2,sticky=E)
    bOk.config(state=NORMAL, relief=RAISED, command=ok)
    texte.set(open('Relation.txt', 'r').read())
    application.mainloop()

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Affectation avec tkinter - Entry
    Par CapDobey dans le forum Général Python
    Réponses: 5
    Dernier message: 31/05/2014, 11h47
  2. Réponses: 0
    Dernier message: 28/10/2013, 15h22
  3. Probleme de programmation avec Tkinter
    Par kaize dans le forum Général Python
    Réponses: 1
    Dernier message: 07/01/2013, 08h31
  4. Réponses: 12
    Dernier message: 23/10/2002, 11h56
  5. Probleme d'impression avec la méthode TForm->Print()
    Par Kid Icarus dans le forum C++Builder
    Réponses: 13
    Dernier message: 31/07/2002, 14h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo