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 :

Gestion de liste pour obtenir leur index


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2019
    Messages : 12
    Points : 6
    Points
    6
    Par défaut Gestion de liste pour obtenir leur index
    Bonjour,

    J'ai un nouveau soucis pour mon projet scolaire (BAC), c'est pourquoi je sollicite votre aide.

    J'ai une liste telle que celle-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    param = [[[17],[19],[26,28,27],[22],[18],[23,24,25],[20,21]],[[55],[57],[59]],[[55],[57],[59],[61]],[[74],[76],[78],[80]]]
    et j'aimerai que mon programme me donne, lorsque je demande par exemple le nombre 17, l'index de la liste dans laquelle il est présent.
    Par exemple ici, 17 fait parti de la 1 ère sous liste, ainsi il me renverrai 1.
    Si je demande 55, il me renverrai 2...

    J'ai tenté quelque chose:

    ici le 'liste' serait donc 'param' et 'valeur' correspond au nombre 17 ou 55...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def num(liste):
        for listes in liste:
            for lis in liste:
                if valeur == listes:
                    val=liste.index(listes)
    Merci d'avance pour votre aide

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 313
    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 313
    Points : 36 819
    Points
    36 819
    Par défaut
    Salut,

    Citation Envoyé par Sporax Voir le message
    Merci d'avance pour votre aide
    Votre truc n'est pas une liste mais un arbre.
    La première question à vous poser est pourquoi une structure aussi compliquée (elle sert à quoi)...
    Puis si elle est indispensable, comment la simplifier pour en sortir plus facilement les informations que vous souhaitez...
    Enfin, on peut commencer à coder.

    - W

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2019
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Salut,

    Merci de ta réponse.

    J'ai conscience de la complexité de la chose...

    une structure aussi compliqué... aie aie aie ça va être compliqué à expliquer:

    cet 'arbre' contient les coordonnées des rectangles en fonction des pages de mon programme... les rectangles sont des boutons et il me faut savoir lesquels sont pressés pour obtenir un numéro de manière à les reconnaitre.

    l'index me servirai de repère, il me donnerai un chiffre 1, 2 ou 3... et je sais sur quel rectangle on a appuyé et je peux ensuite continuer mon programme_

    j'espère être assez clair...

    je pourrai les découper en plusieurs liste..?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 313
    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 313
    Points : 36 819
    Points
    36 819
    Par défaut
    Salut,

    Citation Envoyé par Sporax Voir le message
    cet 'arbre' contient les coordonnées des rectangles en fonction des pages de mon programme... les rectangles sont des boutons et il me faut savoir lesquels sont pressés pour obtenir un numéro de manière à les reconnaitre.
    Une coordonnée, c'est une donnée par dimension.
    Dans votre liste, on a 1, 2, 3 entiers.. ce ne sont pas des coordonnées.
    Après, si ce sont des entiers contenus dans des pages, çà fait une liste d'entiers par page. i.e un truc qui ressemble à [[17, 19, 26, 28;...], [55, 57, ...], [55, 57, ...]]

    - W

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2019
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    J'ai essayé de simplifier un peu... en réalité ce sont des rectangle défini dans un canvas de cette manière à l'aide d'une fonction avec des paramètres...:
    Le rectangle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boutongraphique(330, 390, 510, 330, "", 0, 0, "", "gray95", "Arial 25")
    La fct:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def boutongraphique(unX0, unY0, unX1, unY1, unTexte, unXt, unYt, uneCouleur, unContour, unePolice):
        rect = can.create_rectangle(unX0, unY0, unX1, unY1, outline=unContour)
        fenetre.append(rect)
    dans celle-ci, les rectangles sont ajouté à une liste 'fenetre' et chaque rectangle représente un chiffre....

    Bon, voila (en gros) d'ou vient ces chiffres, il me faut juste pouvoir traiter ces chiffres comme indiquer

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 313
    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 313
    Points : 36 819
    Points
    36 819
    Par défaut
    Salut,

    Citation Envoyé par Sporax Voir le message
    J'ai essayé de simplifier un peu... en réalité ce sont des rectangle défini dans un canvas de cette manière à l'aide d'une fonction avec des paramètres...:
    C'est un Canvas tkinter.
    Même si vous avez 4 fenêtres contenant un Canvas différent, vous avez sur quel item/rectangle l'utilisateur à cliqué, à quel Canvas il appartient et la fenêtre dans laquelle il est affiché.... Mais plutôt que de ré-inventer la roue, il faut apprendre à utiliser les possibilités de tkinter (et de son Canvas). Xe qui peut être un sujet de discussion dans le forum ad hoc.

    - W

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2019
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    ce sont 4 fenêtre contenant un même Canvas, comment savoir sur quel rectangle l'utilisateur à cliquer? je ne connais pas cette fonctionnalité...

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 313
    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 313
    Points : 36 819
    Points
    36 819
    Par défaut
    Citation Envoyé par Sporax Voir le message
    ce sont 4 fenêtre contenant un même Canvas, comment savoir sur quel rectangle l'utilisateur à cliquer?
    Je ne sais pas ce que vous appelez fenêtre mais avec tkinter une fenêtre est principale, si elle a été créé via Tk() ou secondaire, si c'est via Toplevel().
    Et un même Canvas ne peut être à l'intérieur que d'une seule fenêtre: donc 4 fenêtres = 4 Canvas différents.
    Et si les identifiants des items (le rect que vous stockez) d'un Canvas sont uniques, ils peuvent être identiques d'un Canvas à l'autre (ce qui explique que vous trouvez 55 et 57 dans deux sous-listes différentes).

    Pour le reste, l'identifiant des items sur lesquels on clique se récupère via (canvas.)find_withtag('current')

    - W

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2019
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Salut,

    Ce que j'appel fenêtre est en fait un 'abus de language' puisque ce sont mes fonctions, chacune de mes fonction correspond à une 'page'. Ces pages utilisent un canvas.
    En fait récupérer l'identifiant des items par le code que vous m'avez donner est assez pratique mais j'ai déjà ces coordonnés, ce qu'il me manque c'est bien pouvoir gérer mon bazard de liste. 'arbre'.

    Merci de votre aide

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 313
    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 313
    Points : 36 819
    Points
    36 819
    Par défaut
    Citation Envoyé par Sporax Voir le message
    En fait récupérer l'identifiant des items par le code que vous m'avez donner est assez pratique mais j'ai déjà ces coordonnés, ce qu'il me manque c'est bien pouvoir gérer mon bazard de liste. 'arbre'.
    Certes mais on ne sait toujours pas à quoi correspondent ce que vous appelez "page" associées aux identifiants retournés par .create_rectangle (on sait juste ce que ce n'est pas et encore, il a fallu vous tirer les vers du nez).

    - W

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2019
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Pour tout expliquer il me faudrait détailler plusieurs centaines de lignes.... j'ai simplifié le problème et demandé de l'aide uniquement sur le traitement d'informations. Enfin bon, après plusieurs tentative je suis parvenu à traiter, voila le code si quelqu'un viendrait à se poser cette même question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def num(liste):
        for para in liste:
            for listes in para:
                for valeurs in listes:
                    if val_rect == valeurs:
                        val=para.index(listes)
                        vals_rect.append(val
    )

    liste correspond à la liste 'arbre' plus haut que je dois traiter, mon 'val_rect' correspond à la valeur du rectangle, ensuite je recherche son index et je l'ajoute à une liste.

    Merci

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 313
    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 313
    Points : 36 819
    Points
    36 819
    Par défaut
    Citation Envoyé par Sporax Voir le message
    Pour tout expliquer il me faudrait détailler plusieurs centaines de lignes....
    Programmer, c'est apprendre à utiliser les fonctionnalités d'un Canvas (si vous utilisez un Canvas) plutôt que de ré-inventer la roue (et écrire des centaines de lignes inutiles).

    Et pour savoir quelle fonctionnalité mettre en œuvre, il faut arriver à décomposer votre problème en sous-problèmes (ce qui évite d'avoir à expliquer des centaines de lignes).

    Une solution pourrait être d'utiliser des marques/tags associés à vos "rectangles".

    Et désolé, ici, c'est un forum de développeurs donc avant de résoudre un problème, chercher à savoir s'il est bien posé et si les fonctionnalités disponibles sont utilisées au mieux... pour justement éviter d'avoir à coder soi même.

    - W

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/08/2017, 09h20
  2. Réponses: 2
    Dernier message: 12/08/2013, 19h26
  3. Réponses: 2
    Dernier message: 19/11/2009, 03h12
  4. Quelle requête dois-je écrire pour obtenir cette liste ?
    Par boufon dans le forum Langage SQL
    Réponses: 1
    Dernier message: 19/07/2007, 02h12

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