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 :

Probleme de récupération de données pour les intégrer dans une Entry tkinter [Python 3.X]


Sujet :

Python

  1. #1
    Membre habitué
    Homme Profil pro
    Technicien electronique
    Inscrit en
    Juin 2022
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien electronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 10
    Par défaut Probleme de récupération de données pour les intégrer dans une Entry tkinter
    Bonjour,

    Je me heurte à une petite difficulté que je n'arrive pas à résoudre :

    Nom : schema.PNG
Affichages : 360
Taille : 33,7 Ko

    J'ai un fichier (GUI) contenant une instruction d'ouverture de fichier et qui viens ensuite insérer les infos dans un widget Text.

    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
    ###### FONCTION OUVERTURE DE FICHIER ######
    def openfile():
        global cmd_file
        global log_data
        global logname
        cmd_file = filedialog.askopenfilename(title="Open SMW Log file", filetypes=(("Text Files", "*.log"),))
        filename = os.path.basename(cmd_file)
        path_entry.insert(END, cmd_file)
        cmd_file = open(cmd_file, 'r')
        log_data = cmd_file.read()
        log_area.insert(END, log_data)
        logname = (os.path.splitext(filename.upper())[0])
        serialnumber.set(str(logname))
        print(cmd_file)
     
    serialnumber = StringVar()
    logname =''
    Dans un autre fichier Variables.py, j'ai des fonctions de recherche sur le texte ouvert précedemment :

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    #!/usr/bin/python
    # -*- coding: iso-8859-1 -*-
    import tkinter as tk
    from tkinter import *
    from tkinter import filedialog
     
    cmd_file = ''
    logdata = ''
    upsdate = ''
    upsrating = ''
    upstype = ''
    #ups_date = StringVar()
    #ups_rating = StringVar()
    #ups_type = StringVar()
    #ups_date.set(str(upsdate))
    #ups_rating.set(upsrating)
    #ups_type.set(upstype)
     
    target = "UPS date (MM-dd-yyyy HH:mm) = "
    target2 = "Nominal system rating = "
    target3 = "UPS with IBS System configuration"
     
    def upsdateread():
        with open(cmd_file, 'r') as datafile:
            linenum = 0
        for line in datafile.readlines():
            linenum += 1
            if target in line:
                    upsdate = line[30:46]
                    print(upsdate)
     
    def upsratingread():
        with open(cmd_file, 'r') as datafile:
            linenum = 0
        for line in datafile.readlines():
            linenum += 1
            if target2 in line:
                    upsrating = line[24:46]
                    print(upsrating)
     
    def upstyperead():
        with open(cmd_file, 'r') as datafile:
            linenum = 0
        for line in datafile.readlines():
            linenum += 1
            if target3 in line:
                    upstype = line[0:46]
                    print(upstype)
    J'ai mis les stringvar() et les .set en attente car apres plusieurs essais entre les deux fichiers je n'ai rien réussis à faire de concret..

    Je pense que le probleme viens du fait que hors de la fonction openfile() le contenu du fichier n'est pas disponible puisque stocker dans mon widget text.

    Comment pourrais-je faire pour récupérer ces informations ?

    En vous remerciant par avance

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 776
    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 776
    Par défaut
    Salut,

    Citation Envoyé par Highness023 Voir le message
    J'ai mis les stringvar() et les .set en attente car apres plusieurs essais entre les deux fichiers je n'ai rien réussis à faire de concret..
    Pourquoi deux fichiers scripts alors que vous pourriez tout avoir dans un seul et que ce serait sans doute plus simple ?

    Citation Envoyé par Highness023 Voir le message
    j'ai des fonctions de recherche sur le texte ouvert précedemment
    Vous lisez un fichier pour l'insérer dans le widget Text et dans un autre code, vous lisez le même fichier (mais ça pourrait être un autre) pour faire je ne sais quoi...
    Quel est le rapport entre les deux et comment le réaliser? Moi je dirais que c'est juste le pourquoi on apprend à programmer: quand on sait pas, on est bien embêté mais c'est pas pour rien qu'on écrit des tutos... Ca vous demande un certain temps et c'est impossible d'y répondre en quelques minutes dans un forum.

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

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut !

    Comme dit Wiz, avoir 2 scripts ne va pas te simplifier la vie, et là ça semble inutile...

    De plus tes fonctions de recherche semblent être optimisables :
    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
    >>> def toto():    
    ...     with open(cmd_file, 'r') as datafile:
    ...         for i, line in enumerate(datafile.readlines()):
    ...             if target in line:
    ...                 upsdate = line[30:46]
    ...                 print(i, upsdate)
    ...             elif target2 in line:
    ...                 upsrating = line[24:46]
    ...                 print(i, upsrating)
    ...             elif target3 in line:
    ...                 upstype = line[0:46]
    ...                 print(i, upstype)
    ...     return upsdate, upsrating, upstype
    ... 
    >>> upsdate, upsrating, upstype = toto()
    Ou si tes variables sont globales (un cours au hasard : https://reeborg.ca/docs/fr/variables/scope.html):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    >>> def toto():
    ...     global upsdate, upsrating, upstype
    ...     with open(cmd_file, 'r') as datafile:
    ...         for i, line in enumerate(datafile.readlines()):
    ...             if target in line:
    ...                 upsdate = line[30:46]
    ...                 print(i, upsdate)
    ...             elif target2 in line:
    ...                 upsrating = line[24:46]
    ...                 print(i, upsrating)
    ...             elif target3 in line:
    ...                 upstype = line[0:46]
    ...                 print(i, upstype)

  4. #4
    Membre habitué
    Homme Profil pro
    Technicien electronique
    Inscrit en
    Juin 2022
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien electronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 10
    Par défaut
    Bonjour,

    Moi je dirais que c'est juste le pourquoi on apprend à programmer: quand on sait pas, on est bien embêté mais c'est pas pour rien qu'on écrit des tutos... Ca vous demande un certain temps et c'est impossible d'y répondre en quelques minutes dans un forum.
    Quand on ne sait pas on apprend. Quand je ne sais pas je cherche, je n'arrive pas à faire ce que je veux je demande de l'aide.
    Et si les tutos faisaient tout, et ça se saurais. Si tu ne veux pas m'aider, pas de problème.

    Pourquoi deux fichiers scripts alors que vous pourriez tout avoir dans un seul et que ce serait sans doute plus simple ?
    Tout empiler dans un fichier ? Je sais peut être pas programmer mais sur la base je voulais des petits segments pas trop dur à débeugger, pour développer ou réparer mon logiciel en cas de soucis.
    Apres j'entend que ce serait plus simple, et si il faut je le ferais.

    Vous lisez un fichier pour l'insérer dans le widget Text et dans un autre code, vous lisez le même fichier (mais ça pourrait être un autre) pour faire je ne sais quoi...
    Je charge un fichier texte que j'affiche dans mon programme, et je recherche des éléments dans ce fichier par la même occasion que je veux ensuite renvoyer dans un objet entry.
    Je cherche simplement à trouver comment faire.

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 776
    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 776
    Par défaut
    Citation Envoyé par Highness023 Voir le message
    Quand on ne sait pas on apprend. Quand je ne sais pas je cherche, je n'arrive pas à faire ce que je veux je demande de l'aide.
    Et si les tutos faisaient tout, et ça se saurais. Si tu ne veux pas m'aider, pas de problème.
    A la sortie d'un apprentissage via les tutos, vous devriez savoir réaliser de tels petits projets sans avoir à chercher ailleurs que dans les chapitres de votre tuto préféré ou dans le code des exercices proposés.

    En insistant à vous mettre le nez dans les tutos, je vous évite d'abandonner votre projet dans quelques jours dégoûté par les difficultés rencontrées et du temps passé à tourner en rond.

    Si vous voulez apprendre à programmer commencez par le début, et si, sans formation, vous voulez réaliser un projet particulier embauchez un codeur. Dit autrement, donnez vous les moyens de vos ambitions!

    Citation Envoyé par Highness023 Voir le message
    Tout empiler dans un fichier ? Je sais peut être pas programmer mais sur la base je voulais des petits segments pas trop dur à débeugger, pour développer ou réparer mon logiciel en cas de soucis.
    Que ce soit dans un ou plusieurs fichiers ne change pas grand chose: on écrit une fonction qui appelle les fonctions à tester... ignorant les autres. En attendant vous vous créez des problèmes que pas grand monde saura résoudre car votre code marche sur la tête.



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

  6. #6
    Membre habitué
    Homme Profil pro
    Technicien electronique
    Inscrit en
    Juin 2022
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien electronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 10
    Par défaut
    Si c'est pour répondre des choses comme ça je vous invite à ne plus répondre vous me faites perdre mon temps.

    Bien cordialement.

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 776
    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 776
    Par défaut
    Citation Envoyé par Highness023 Voir le message
    Si c'est pour répondre des choses comme ça je vous invite à ne plus répondre vous me faites perdre mon temps.
    Croyez vous que beaucoup perdront le leur à vous rabâcher ce que vous devriez avoir appris dans n'importe quel tuto avant de demander de l'aide?

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

  8. #8
    Invité
    Invité(e)
    Par défaut
    Récupérer des données dans un fichier txt et les afficher dans tkinter, ce n'est pas très compliqué...
    Un exemple :
    toto.txt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Donnée A
    Donnée B
    Donnée C
    toto.py :
    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
    import tkinter
    from random import randint as ri
     
    def extract_data():
        with open("toto.txt","r",encoding="utf8") as f :
            data = f.readlines()
        return data
     
    def display_data(event):
        data = extract_data()
     
        for widget in frame.winfo_children():
            widget.destroy()
     
        for donnee in data:
            color = "#%02x%02x%02x" % (ri(100,255),ri(100,255),ri(100,255))
            obj = tkinter.Label (frame, text = donnee.rstrip(), bg = color, width = 50)
            obj.pack ()
     
     
    root = tkinter.Tk ()
    frame = tkinter.Frame(root)
    frame.pack()
    button = tkinter.Button(root, text="RESTART", bg = "YELLOW", activebackground = "BLACK", activeforeground = "YELLOW", font = ("Arial black",15))
    button.bind('<ButtonRelease-1>',display_data)
    button.pack(fill = tkinter.X, pady = 12)
    root.mainloop ()

  9. #9
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 925
    Billets dans le blog
    8
    Par défaut
    Bonjour,
    Citation Envoyé par LeNarvalo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    button = tkinter.Button(root, text="RESTART", bg = "YELLOW", activebackground = "BLACK", activeforeground = "YELLOW", font = ("Arial black",15))
    button.bind('<ButtonRelease-1>',display_data)
    Button dispose d'un attribut command , pas besoin d'utiliser bind...

  10. #10
    Invité
    Invité(e)
    Par défaut
    Yeap mais je préfère bind ça me permet de récupérer d'autres informations dir(event) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'char', 'delta', 'height', 'keycode', 'keysym', 'keysym_num', 'num', 'send_event', 'serial', 'state', 'time', 'type', 'widget', 'width', 'x', 'x_root', 'y', 'y_root'
    et même de squatter l'instance de classe button avec des attributs button.indice = 0 -> indice_du_bouton = event.widget.indice très pratique quand on crée des buttons automatiquement.

    Il y a sûrement une alternative avec command mais j'ai commencé à utiliser ça il y a longtemps donc j'ai pas cherché plus loin.

  11. #11
    Membre habitué
    Homme Profil pro
    Technicien electronique
    Inscrit en
    Juin 2022
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien electronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 10
    Par défaut
    Bonjour,

    Un grand merci à LeNarvalo & Hominidé j'ai pu terminer mon programme grace à vous cela marche parfaitement.
    J'ai utilisé l'idée du fichier.txt, en gros je crée un fichier tampon pour travailler sur ce que j'importe.

    Je n'ai pas pris l'option du fichier temporaire, car certaines machines ou seront déployer mon prog ont des restriction administrateur sur l'écriture dans les tmp.

    Un énorme merci à vous deux.


    @wiztricks : Un conseil, tu fais des leçons de moral mais tu ne m'as absolument pas aidé, alors qu'en un message 2 personnes m'ont donné LE TRUC qu'il me fallait.
    Je te laisse méditer sur tes jugements de valeurs, alors qu'on a pas gardé les cochons ensemble. (Je te rend le même niveau de respect que tu m'as donné avec ce coté hautain qui te semble caractériser.)
    Et ce qui marche sur la tête n'est pas tant mon programme que j'ai eu le courage de faire, mais ton attitude pour les gens qui essaient d'apprendre quelque chose et de requérir l'expérience des gens pour progresser.

    Cette réponse étant aux nombreuses que tu m'as balancé gratuitement et qui n'ont en rien fais avancer mes problèmes.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/04/2018, 14h22
  2. récupération des données pour les afficher dans une ListView
    Par khoukha1 dans le forum Composants graphiques
    Réponses: 5
    Dernier message: 14/06/2012, 14h59
  3. Réponses: 2
    Dernier message: 10/09/2007, 16h40
  4. Réponses: 4
    Dernier message: 22/05/2007, 14h42
  5. Réponses: 3
    Dernier message: 11/04/2007, 14h01

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