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

GUI Python Discussion :

Comment récupérer l'état d'un widget d'un canvas tkinter [Python 3.X]


Sujet :

GUI Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Points : 27
    Points
    27
    Par défaut Comment récupérer l'état d'un widget d'un canvas tkinter
    Bonjour a tous,

    Je souhaite récupérer le status d'un widget (d'une ellipse dans mon cas) d'un canevas tkinter.
    J'arrive à récupérer l'état du canevas et des autres widget de même niveau avec la commande
    monwidget.cget('state')
    Mais impossible de recuperer le status d'un widget de sous niveau.
    Rappel : les état de mon ellipse peuvent être 'normal', 'hidden', ou 'disable'.

    Savez vous si il est possible de récupérer la valeur de cet état et si oui comment?

    Merci beaucoup.
    J'ai déjà beaucoup cherché dans les différents forums.

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 601
    Points : 56 700
    Points
    56 700
    Billets dans le blog
    40
    Par défaut
    Bonsoir,

    avec itemcget, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # ...
    canevas = tk.Canvas(app, width=400, height=400)
    canevas.pack()
     
    # etc.
     
    id = canevas.create_oval(40, 20, 120, 200 , outline = 'red', state = tk.NORMAL)
     
    etat_ellipse = canevas.itemcget(id, 'state')
     
    # etc.

  3. #3
    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 Djey51 Voir le message
    Mais impossible de recuperer le status d'un widget de sous niveau.
    Rappel : les état de mon ellipse peuvent être 'normal', 'hidden', ou 'disable'.
    Les objets ajoutés au Canvas ne sont pas des widgets mais des items graphiques.
    Accéder a leur état se fera avec d'autres méthodes que celles des widgets... et s'il y a collision dans le nommage cget et configure étant déjà utilisées, on les nommera itemcget, itemconfigure.

    Citation Envoyé par Djey51 Voir le message
    J'ai déjà beaucoup cherché dans les différents forums.
    Le Canvas est l'un des widgets les plus compliqués... Prenez le temps d'ouvrir une documentation pour avoir une idée de tout ce qu'on peut faire avec... Car il va falloir faire avec lui et non à votre idée...

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

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par f-leb Voir le message
    Bonsoir,

    avec itemcget, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # ...
    canevas = tk.Canvas(app, width=400, height=400)
    canevas.pack()
     
    # etc.
     
    id = canevas.create_oval(40, 20, 120, 200 , outline = 'red', state = tk.NORMAL)
     
    etat_ellipse = canevas.itemcget(id, 'state')
     
    # etc.
    Merci beaucoup @f-leb pour la réponse rapide et précise.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Les objets ajoutés au Canvas ne sont pas des widgets mais des items graphiques.
    Accéder a leur état se fera avec d'autres méthodes que celles des widgets... et s'il y a collision dans le nommage cget et configure étant déjà utilisées, on les nommera itemcget, itemconfigure.



    Le Canvas est l'un des widgets les plus compliqués... Prenez le temps d'ouvrir une documentation pour avoir une idée de tout ce qu'on peut faire avec... Car il va falloir faire avec lui et non à votre idée...

    - W
    Merci beaucoup pour le lien vers cette doc.
    je n'étais pas loin car mes recherches m'ont amenées vers ce site sur lequel j'ai trouvé la méthode cget(). mais je n'avais pas trouvé les infos sur les item graphiques.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Les objets ajoutés au Canvas ne sont pas des widgets mais des items graphiques.
    Accéder a leur état se fera avec d'autres méthodes que celles des widgets... et s'il y a collision dans le nommage cget et configure étant déjà utilisées, on les nommera itemcget, itemconfigure.



    Le Canvas est l'un des widgets les plus compliqués... Prenez le temps d'ouvrir une documentation pour avoir une idée de tout ce qu'on peut faire avec... Car il va falloir faire avec lui et non à votre idée...

    - W
    Merci également pour les conseilles.
    Je débute sous Python et suis encore un peu "noyé" par le nombre de choses à connaître. Et pour le moment je trouve qu'il est assez difficile de trouver de la documentation bien faite et qui va au fond du détails des options des méthodes tout en fournissant des petits exemples simples de code (le bout de code de f-leb est parfait par exemple pour comprendre tout de suite). Le site vers lequel tu me renvoies est très bien pour ce qui est d'aller dans le détail des possibilités des méthodes abordées, ce qui est déjà pas mal.
    Même si il semble compliqué, le widget Canvas me semble offrir une multitude de possibilité (dont celle qui m'intéresse dans mon cas et qui est de reproduire le fonctionnement de bouton radio mais avec une charte graphique que je customise à souhait = il faut que ça soit joli quand même !)

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Points : 27
    Points
    27
    Par défaut
    J'ai une nouvelle question :

    Si vous avez des éléments de réponse, je suis preneur

    Merci

  8. #8
    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 Djey51 Voir le message
    Et pour le moment je trouve qu'il est assez difficile de trouver de la documentation bien faite et qui va au fond du détails des options des méthodes tout en fournissant des petits exemples simples de code (le bout de code de f-leb est parfait par exemple pour comprendre tout de suite).
    Le plus difficile à trouver c'est "avec des petits exemples de code". Le site le moins mauvais pour ça est le tuto de tkdocs qui a l'immense avantage de faire un peu le tour de (presque) tous les widgets.

    Par contre, chercher l'exemple qui montre comment réaliser son idée... ça c'est moins évident car entre le rendu qu'on essaie d'obtenir et sa réalisation concrète, il y a plein de solutions (lorsque ce n'est pas "trivial" - le "trivial" étant relatif a son expérience)...

    La difficulté est de reformuler le problème posé en fonction de ce qu'on peut faire avec une bibliothèque graphique... qui est réduit lorsqu'on débute a ce qu'on sait faire avec.
    Cela fait, on sait ce qu'on cherche sur Internet et comme ces types d'interfaces graphiques ont une trentaine d'années, le "comment faire" se trouve assez facilement.

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

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/04/2021, 13h46
  2. Réponses: 5
    Dernier message: 22/03/2015, 20h29
  3. [FAQ] Les formulaires (partie 1) Comment récupérer l'état de cases à cocher ?
    Par Auteur dans le forum Contributions JavaScript / AJAX
    Réponses: 3
    Dernier message: 18/11/2013, 21h31
  4. Comment récupérer l'état d'une case à cocher
    Par oursquetaire dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 10/01/2006, 08h58
  5. comment récupérer l'état d'un capteur?
    Par r0d dans le forum Périphériques
    Réponses: 8
    Dernier message: 17/08/2005, 20h13

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