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

Python Discussion :

problème objets instanciés


Sujet :

Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 175
    Par défaut problème objets instanciés
    Bonjour,

    Voila j'ai un problème qui va surement vous paraître enfantin mais je bloque quand j'essaye de récupérer la valeur d'un widget Entry sous Tkinter.
    erreur affichée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     File "C:\Python25\Module1.py", line 6, in ouvrir
        mon_txt = 'c:/'+ Entree
    TypeError: cannot concatenate 'str' and 'instance' objects
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "C:\Python25\lib\lib-tk\Tkinter.py", line 1403, in __call__
        return self.func(*args)
      File "C:\Python25\Module1.py", line 15, in fermer
        enregistrer()
      File "C:\Python25\Module1.py", line 21, in enregistrer
        fichier.write(str(Entree))
    AttributeError: 'str' object has no attribute 'write'
    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
    32
    33
    34
    35
    # -*- coding: utf-8 -*-
    from Tkinter import *
     
    def ouvrir ():
        global fichier, Entree
        mon_txt = 'c:/'+ str(Entree)
        text1.configure(text = mon_txt)
        try:
            fichier = open(mon_txt, 'r')
        except:
            fichier = open(mon_txt, 'w')
     
    def fermer ():
        global fichier
        enregistrer()
        fichier.close()
        fen1.destroy()
     
    def enregistrer():
        global fichier
        fichier.write(str(Entree))
     
    fichier, mon_txt = '', ''
    fen1 = Tk()
    Entree = Entry(fen1)
    Entree.pack(side = LEFT)
    text1 = Label(fen1, text='')
    text1.pack(side = LEFT)
    bouton_ouvrir = Button(fen1, text = 'Ouvrir', command = ouvrir)
    bouton_ouvrir.pack(side = LEFT)
    bouton_fermer = Button(fen1, text ='Fermer', command = fermer)
    bouton_fermer.pack(side = LEFT)
    zonetext = Text(fen1, height = 400, width = 400)
    zonetext.pack(side=RIGHT)
    fen1.mainloop()
    je ne sais pas ou est la fausse manip mais je pense que plusieurs choses clochent notament au niveau de la déclaration des variables. Je pense également que j'ai un problème d'encodage car les fichiers créés ont des noms avec des chiffres.
    merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 93
    Par défaut
    Bonsoir,
    C'est parce que tu ne récupères pas le texte du contrôle Entree. Du coup, tu essaies de mettre dans la variable mon_txt la concaténation de 'c:/' avec le widget. Voici la correction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mon_txt = 'c:/'+ Entree.get()
    Mais je ne comprend pas ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    try:
        fichier = open(mon_txt, 'r')
    except:
        fichier = open(mon_txt, 'w')
    Pourquoi ouvrir le fichier en lecture, puisque tu souhaites le créer ? Tu peux supprimer le try:except:, et ne laisser que l'ouverture en écriture : si le fichier existe, il sera écrasé, sinon il sera automatiquement créé.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 175
    Par défaut
    je vais essayer avec .get. merci Vladislav IV
    pour ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    try: fichier = open(mon_txt, 'r') except: fichier = open(mon_txt, 'w')
    Mno algo n'est pas fini mais je souhaite ouvrir et lire un fichier si il existe ou alors le créer si il n'existe pas

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 25
    Par défaut
    On peut aussi utiliser cette syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mon_txt = "c:/%s" % Entree.get()

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

Discussions similaires

  1. Réponses: 20
    Dernier message: 09/06/2011, 10h11
  2. [POO] Problème objets PHP5
    Par alliance dans le forum Langage
    Réponses: 2
    Dernier message: 16/08/2006, 17h39
  3. [Débutant] problème objet iframe
    Par kitsune dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 05/07/2006, 15h14
  4. [debutant]Supprimer un objet instancié
    Par mikedavem dans le forum Général Java
    Réponses: 9
    Dernier message: 12/05/2006, 00h19
  5. [FLASH MX2004] Valeurs d'objets instances de classes...
    Par amietbeach dans le forum Flash
    Réponses: 2
    Dernier message: 25/02/2006, 15h38

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