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 :

Récuperer des données d'un fichier texte et en faire des listes


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 16
    Points : 1
    Points
    1
    Par défaut Récuperer des données d'un fichier texte et en faire des listes
    Bonjour à tous!

    Je suis étudiants en première année d'école d'ingénieur et commercial.

    Nous avons un projet de programmation (faire une banque).

    J'ai une fenêtre (principale) tkinter qui m'affiche un tableau (compte) et d'autres font des ajouts (ajouts d'opération par exemple (celles=ci ne sont pas dans ce code)). Celles-ci écrivent des données dans un fichier txt. La fenêtre principale doit pouvoir récuperer ces données et les afficher.

    Avec mon code, j'arrive à récuperer les données (avec readlines()) mais je ne peux pas les afficher une par une (je peux afficher que les dernières données, comme si celles-ci s'empilaient.

    J'aimerais pouvoir créer une liste avec le premier mot de chaque ligne, un autre liste avec le deuxieme mot de chaque ligne etc...

    Si vous pouvez m'aider ça serait top!

    Le problème se trouve dans la partie «*#récupération des données dans le fichier txt*»

    fenetre gestion comptes.py

    Merci d'avance!

  2. #2
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 513
    Points : 700
    Points
    700
    Par défaut
    Bonjour,
    Tu places tes widgets à la même cordonné à chaque fois, je n'est pas fait de Tkinter depuis un moment mais je me souvent de grid http://effbot.org/tkinterbook/grid.htm
    Avec tkinter il y à plusieurs types de placement, pack, place et grid, dans ta boucle tu auras juste à faire widget.grid(row=incrément de la boucle, column=..)

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 16
    Points : 1
    Points
    1
    Par défaut
    Oui je connais ça

    Mais le problème n’est pas sur le placement

    J’ai faire un code qui récupère les données, mots par mots si la ligne txt commence pare OPÉ (pareil pour celles qui commencent par VIR)
    Cependant tous les premiers mots des lignes commençant par OPÉ «*s’empilent*» pareil pour les seconds etc...
    Du coup, quand j’affiche tout ça je ne vois que les mots de la dernière ligne!

  4. #4
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 513
    Points : 700
    Points
    700
    Par défaut
    Bah alors je ne suis par sur de comprendre la logique derrière votre code, peux-tu indiquer la ligne qui gère l'affichage ?

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 16
    Points : 1
    Points
    1
    Par défaut
    à la ligne 87 et 88 il y a deux affichages (pas tous car c'était juste pour voir ce que mon code donnait. Si on lance le programme on voit tout s'afficher dans la console mais pas sur la fenêtre tkinter.

    Par exemple "d" correspond au quatrième mot de chaque ligne, mais sur la fenêtre tkinter, d ne donne que la quatrième mot de la dernière ligne. Alors que tout est bien, présent dans la console...

  6. #6
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 513
    Points : 700
    Points
    700
    Par défaut
    Bah oui, les cordonnées de là où tu affiche ne changent pas (.place() place à des cordonnées fixes)

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 16
    Points : 1
    Points
    1
    Par défaut
    Ah oui effectivement ils s'empilent dans l'affichage!

    Alors comment faire pour que les données ne s'empilent pas?
    Vu que j'affiche "d" par exemple mais que d à plusieurs données? car avec .place ou autre, je ne peux placer que "d", et non les données qu'il y a dedans?

    merci d'avance

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 16
    Points : 1
    Points
    1
    Par défaut
    voici le fichier txt pour que vous puissiez faire fonctionner le code.

    j'ai modifier le code pour que l'affichage se fasse pas à la même place mais à chaque fois il affiche l'empilage des données et non les données une à une :/

    Sauriez vous comment faire?

    fichier.txt

    fenetre gestion comptes.py

  9. #9
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Peux-tu donner un exemple de fichier.txt ?
    Pas d'aide par mp.

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 16
    Points : 1
    Points
    1
    Par défaut
    Oui, je viens de modifier mon précédent message pour que vous puissiez y accéder

  11. #11
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 513
    Points : 700
    Points
    700
    Par défaut
    Soit tu récupère la hauteur d'une ligne, puis dans ton Label(can3, text=d).place(x=30, y=60) tu changes Y=60 en Y=60 + hauteur ligne*nb de ligne, soit tu utilises grid et tu fait Label(can3, text=d).grid(row=numero_ligne, column=0), grid est vraiment le must have pour Tkinter.

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 16
    Points : 1
    Points
    1
    Par défaut
    Je viens d'essayer

    En mettant Y=60 + hauteur ligne*nb de ligne, la position est changée mais le problème d'empilage est toujours présent :/

    Avec le .grid, le tableau ne s'affiche plus et juste le "12" s'affiche (pour "d")

  13. #13
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 513
    Points : 700
    Points
    700
    Par défaut
    Ba tu à bien récupéré la hauteur d'une ligne en px ? ( windget.winfo_height() )
    donc y = 60 + (taille d'une ligne*le nombre de ligne avant)
    Exemple : si le taille d'un label est de 10px alors:
    y de label1 = 60 + 5*0 = 60
    y de label2 = 60 + 5*1 = 65
    y de label3 = 60 + 5*2 = 70
    Ect
    suffit de récupérer la hauteur d'une ligne et de compter le nombre de ligne.

    Sinon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    y_label = 60
    taille_label = windget.winfo_height()
    for line in f.readlines():
    	y_label += taille_label
    	.... 
    	label.place(y=y_label, x= 60)
    Mais franchement c'est se casser la tête pour rien, grid est le plus adapté.. mais il faut penser des le début à son utilisation, impossible de mélanger grid et place, quitte à choisir autant prendre le plus pratique (grid)

  14. #14
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 16
    Points : 1
    Points
    1
    Par défaut
    Hmmm à moins que je fasse mal, le problème n'a pas changé...

    Je mets en capture d'écran ce que j'ai :

    Nom : Capture.PNG
Affichages : 984
Taille : 153,8 Ko

  15. #15
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par Lillite Voir le message
    Hmmm à moins que je fasse mal, le problème n'a pas changé...
    Ah ben, c'est compliqué d'essayer de refaire ce que grid fait déjà pour vous.
    Mais quel est l'intérêt de vouloir "refaire" (quand en plus on ne s'en sort pas)?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  16. #16
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 16
    Points : 1
    Points
    1
    Par défaut
    Hein? Je ne comprends pas votre message.

    Avec Grid, tout s’afficherait?

    Je ne comprends pas comment ça peut marché vu que «*d*» contient plusieurs valeurs... quelque soit la place de «*d*», les valeurs seront toujours toutes empilées non?

  17. #17
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Lillite Voir le message
    Hein? Je ne comprends pas votre message.

    Avec Grid, tout s’afficherait?
    Vous avez essayé et çà ne fonctionne pas?

    Citation Envoyé par Lillite Voir le message
    Je ne comprends pas comment ça peut marché vu que «*d*» contient plusieurs valeurs... quelque soit la place de «*d*», les valeurs seront toujours toutes empilées non?
    Et moi je ne comprends pas pourquoi vous essayer d'afficher un tableau sans essayer d'utiliser grid (ni en expliquer les raisons).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  18. #18
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 16
    Points : 1
    Points
    1
    Par défaut
    Le problème n'est pas d'afficher le tableau! mais les valeurs que contient d

  19. #19
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Lillite Voir le message
    Le problème n'est pas d'afficher le tableau! mais les valeurs que contient d
    Si je prends la peine de lire le code qu'il y a dans la photo, vous affichez le contenu de la variable "e" (non "d") et toujours au même endroit - ayez la curiosité de faire un print de la valeur de y_label -.
    Et vous n'avez toujours pas expliqué pourquoi avoir choisi place plutôt que grid...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  20. #20
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 16
    Points : 1
    Points
    1
    Par défaut
    Effectivement c’est e que j’affiche mais au terme à,b, c ... g seront affichés

    J’ai mit .place car j’y arrive mieux avec cela

    Je regarde Ça juste après pour le print (y_label)

    Merci d’avance!

Discussions similaires

  1. Extraire des donnés d'un fichier texte
    Par sadsad dans le forum Langage
    Réponses: 2
    Dernier message: 07/02/2006, 15h09
  2. Réponses: 2
    Dernier message: 16/01/2006, 19h34
  3. Réponses: 2
    Dernier message: 05/01/2006, 00h29
  4. [JTable] Comment récuperer les données d'un fichier texte ?
    Par Makunouchi dans le forum Composants
    Réponses: 2
    Dernier message: 03/05/2005, 16h37
  5. Réponses: 3
    Dernier message: 22/02/2004, 20h09

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