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 :

importer une liste à partir d'une interface Tkinter


Sujet :

Python

  1. #1
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2016
    Messages : 8
    Par défaut importer une liste à partir d'une interface Tkinter
    Bonjour à tous,
    je souhaiterais demander à l'utilisateur via tKinter de rentrer une liste et pouvoir utiliser cette liste sur python ensuite. J'ai réalisé ça mais le problème c'est que je n'arrive pas à convertir ma liste de liste en float, tout en gardant l'ordre des sous listes.
    Ma question:
    -soit m'expliquer cmt je peux utiliser une liste importée via Tkinter
    -soit cmt convertir ça : ["1,2,3","4,5,7","7,1"] en ça [[1,2,3],[4,5,7],[7,1]] sachant que le nombre de sous listes ou d'élements des sous listes peut varier.

    Merci de votre aide !!

    (en commentaires au début ,c'était pour essayer d'importer la liste, ce sont des tests brouillons)
    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
     
    # -*- coding: utf-8 -*-
    """
    Created on Sat Jun  4 13:43:58 2016
     
    @author: miss
    """
     
    from tkinter import *
    import numpy as np
    formulaire=Tk()
     
    #def lister_sommet():
    #    som=var_sommet.get()
    #
     
     
    labSom1 = Label(formulaire, text = "Sommets:")
    labSom1.grid(row=0,column=0,rowspan=1,columnspan=1,sticky=(E),padx=0,pady=0)
    var_sommet = StringVar()
    entsommet = Entry(formulaire, textvariable = var_sommet, width = 50)
    entsommet.grid(row=0,column=1,rowspan=1,columnspan=2,sticky=(W),padx=2,pady=10)
     
    butGraphe=Button(formulaire, text = "Ajouter au graphe",command = lister_sommet )
    butGraphe.grid(row=2,column=3,rowspan=1,columnspan=1,sticky=(W),padx=20,pady=30) 
    formulaire.mainloop()

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

    Citation Envoyé par paxapaxa Voir le message
    je souhaiterais demander à l'utilisateur via tKinter de rentrer une liste et pouvoir utiliser cette liste sur python ensuite. J'ai réalisé ça mais le problème c'est que je n'arrive pas à convertir ma liste de liste en float, tout en gardant l'ordre des sous listes.
    Ma question:
    -soit m'expliquer cmt je peux utiliser une liste importée via Tkinter
    -soit cmt convertir ça : ["1,2,3","4,5,7","7,1"] en ça [[1,2,3],[4,5,7],[7,1]] sachant que le nombre de sous listes ou d'élements des sous listes peut varier.
    Votre question n'a rien à voir avec tkinter à proprement parler.
    Et la réponse s'apprend en potassant un peu les tuto. pour apprendre les objets de bases du langage string, listes,... et les constructions for...while...
    Sinon on peut aussi écrire çà comme çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> z = ["1,2,3","4,5,7","7,1"]
    >>> [ [float(x) for x in y.split(',')] for y in z ]
    [[1.0, 2.0, 3.0], [4.0, 5.0, 7.0], [7.0, 1.0]]
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2016
    Messages : 8
    Par défaut
    Bonsoir, merci pour votre réponse, mais je n'arrive pas à le faire marcher dans mon programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def lister_sommet():
        som=var_sommet.get()
        list_sommeti= som.split('0')
        del list_sommeti[0]
        [ [float(x) for x in y.split(',')] for y in list_sommeti ]
        return (list_sommeti)
    et le msg d'erreur :
    could not convert string to float:

    Merci !

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 720
    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 720
    Par défaut
    Citation Envoyé par paxapaxa Voir le message
    Bonsoir, merci pour votre réponse, mais je n'arrive pas à le faire marcher dans mon programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def lister_sommet():
        som=var_sommet.get()
        list_sommeti= som.split('0')
        del list_sommeti[0]
        [ [float(x) for x in y.split(',')] for y in list_sommeti ]
        return (list_sommeti)
    et le msg d'erreur :
    could not convert string to float:

    Si à ne fonctionne pas dans votre programme c'est peut être que les données ne sont pas comme vous l'avez indiqué.
    De toutes façons, à vous d'ajouter des "print" de variables pertinentes pour voir à quoi ressemble list_sommeti.

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

  5. #5
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2016
    Messages : 8
    Par défaut
    Il doit en effet avoir un problème avec les données mais, malgré les nombreux print() effectués, je ne comprends pas ce qui va pas. Voici l'intégralité de mon code .
    Dans l'interface, je rentre ça : 01,2,3,04,5,6 par exemple
    quand je mets un print avant d'effectuer le découpage j'obtiens bien ça : ['1,2,3,', '4,5,6']
    Quelle est la différence ?
    merci
    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
    from tkinter import *
    import numpy as np
    formulaire=Tk()
     
    def lister_sommet():
        som = var_sommet.get()
        list_sommeti= som.split('0')
        del list_sommeti[0]
        print(list_sommeti)
        list_sommeti=[ [float(x) for x in y.split(',')] for y in list_sommeti ]
     
        return (list_sommeti)
     
     
     
     
     
     
    labSom1 = Label(formulaire, text = "Sommets:")
    labSom1.grid(row=0,column=0,rowspan=1,columnspan=1,sticky=(E),padx=0,pady=0)
    var_sommet = StringVar()
    entsommet = Entry(formulaire, textvariable = var_sommet, width = 50)
    entsommet.grid(row=0,column=1,rowspan=1,columnspan=2,sticky=(W),padx=2,pady=10)
     
     
     
    butGraphe=Button(formulaire, text = "Ajouter au graphe",command = lister_sommet )
    butGraphe.grid(row=2,column=3,rowspan=1,columnspan=1,sticky=(W),padx=20,pady=30) 
    formulaire.mainloop()

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 720
    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 720
    Par défaut
    Citation Envoyé par paxapaxa Voir le message
    Dans l'interface, je rentre ça : 01,2,3,04,5,6 par exemple
    quand je mets un print avant d'effectuer le découpage j'obtiens bien ça : ['1,2,3,', '4,5,6']
    Quelle est la différence ?
    Elle saute aux yeux.
    Si ce n'est pas le cas pour vous, triturez les éléments de votre liste avec .split(',').
    note: n'oubliez pas que le seul intérêt de ce genre d'exercice est de vous permettre de construire des "strategies" pour résoudre ce genre de problème par vous même. En révisant vos cours, en vous posant des questions sur ce que vous pensiez que le code fait,.... Et si vous ne voyez pas de différence, c'est que vous manquez d'exercice...

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

  7. #7
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2016
    Messages : 8
    Par défaut
    Bien vu, je suis en effet débutante depuis peu, et je cherche de l'aide car j'ai ce projet à rendre demain. La virgule derrière le 3 me pose en effet problème, elle a du apparaître quand je split avec comme séparateur zéro.
    Quand je rentre ça dans l'interface ça marche donc bien 01,2,304,5,6 mais ce n'est pas très clair pour l'utilisateur. Une astuce pour réussir tout de même à obtenir le résultat souhaité en rentrant ça 01,2,3,04,5,6 ? Merci !

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 720
    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 720
    Par défaut
    Citation Envoyé par paxapaxa Voir le message
    Bien vu, je suis en effet débutante depuis peu, et je cherche de l'aide car j'ai ce projet à rendre demain. La virgule derrière le 3 me pose en effet problème, elle a du apparaître quand je split avec comme séparateur zéro.
    Quand je rentre ça dans l'interface ça marche donc bien 01,2,304,5,6 mais ce n'est pas très clair pour l'utilisateur. Une astuce pour réussir tout de même à obtenir le résultat souhaité en rentrant ça 01,2,3,04,5,6 ? Merci !
    Si le but est de vous simplifiez la vie pour que .split fonctionne, '1,2,3X4,5,6'.split('X') ou autre devrait le faire.

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

Discussions similaires

  1. Selection à partir d'une liste et renvoyant une liste
    Par Thebaloo dans le forum Requêtes
    Réponses: 10
    Dernier message: 20/12/2012, 10h47
  2. Réponses: 7
    Dernier message: 22/06/2012, 12h12
  3. Réponses: 8
    Dernier message: 10/12/2009, 16h53
  4. Réponses: 2
    Dernier message: 01/05/2008, 13h36
  5. remplir une liste à partir d'une liste
    Par LeXo dans le forum Access
    Réponses: 7
    Dernier message: 14/04/2006, 12h29

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