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 :

Problème récupération de la valeur d'un Widget Radiobutton [Python 3.X]


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    CP
    Inscrit en
    Septembre 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : CP

    Informations forums :
    Inscription : Septembre 2016
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Problème récupération de la valeur d'un Widget Radiobutton
    Bonjour,

    Je débute en Python et je me lance dans une petite application afin d'avoir quelque chose de concret.
    Bref, je rencontre un problème et j'ai beau chercher sur le net il y a quelque chose qui m'echappe.

    J'ai donc créé ce bout de code afin de n'avoir que mon problème et de ne pas être polluer par toutes les autres erreurs de mon code

    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
    #!/usr/bin/python3
    # -*-coding:utf-8 -*
     
    class Test_00:
        def __init__(self):
     
            # Création de la fenêtre
            self.fenetre = tk.Tk()
            tk.Button(self.fenetre,text="TEST", command=self.test).grid(row = 0, column = 0)
     
            # Labelframe
            self.frame_resolution = tk.LabelFrame(self.fenetre, text="Choix")
            self.frame_resolution.grid(row = 0, column = 1, rowspan = 4, padx = 5, pady = 5)
            self.choix_radio_bouton = tk.StringVar()
            tk.Radiobutton(self.frame_resolution, text="Choix 1", variable=self.choix_radio_bouton, value=(1, 2)).grid(row = 1, column = 0)
            tk.Radiobutton(self.frame_resolution, text="Choix 2", variable=self.choix_radio_bouton, value=(3, 4)).grid(row = 2, column = 0)
            tk.Radiobutton(self.frame_resolution, text="Choix 3", variable=self.choix_radio_bouton, value=(5, 6)).grid(row = 3, column = 0)
            tk.Radiobutton(self.frame_resolution, text="Choix 4", variable=self.choix_radio_bouton, value=(7, 8)).grid(row = 4, column = 0)
            self.choix_radio_bouton.set((7, 8))
     
            self.fenetre.mainloop()
            self.fenetre.destroy()
     
     
        def test(self):
            print(self.choix_radio_bouton.get())
     
     
    #----------------------------------------------------------------------------------------------------------------------
    #                                           PROPGRAMME PRINCIPAL
    #----------------------------------------------------------------------------------------------------------------------
    import tkinter as tk
     
    Test_00()
    Le problème est le suivant, si on clique sur le bouton test juste après l'affichage de la fenêtre on obtient : (7, 8)
    Par contre si mon modifie le choix on obtient : 1, 2 ou 2, 3 ou ... même 7, 8

    Merci d'avance pour votre aide

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

    Ligne 19, vous assignez (7, 8) à la StringVar choix_radio_bouton.
    Tant que l'utilisateur ne donne pas un autre choix, normal que le contenu de la variable reste celui là.

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

  3. #3
    Futur Membre du Club
    Homme Profil pro
    CP
    Inscrit en
    Septembre 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : CP

    Informations forums :
    Inscription : Septembre 2016
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Merci pour ce retour, cette ligne permet (d'après ce que j'en ai compris) d'affecter par défaut une valeur pour le lancement de la fenêtre.
    Quand la fenêtre s'affiche, j'ai donc effectivement le radiobutton Choix 4 qui est sélectionné.

    Mon problème se situe au niveau de la valeur ramenée.
    Lors du choix par défaut, j'ai un string qui contient : (7, 8)

    Et après sélection d'un autre radiobutton, j'ai un string qui contient : 1 2 ou 3 4, ...

    Comment faire pour que la valeur par défaut soit également du type 7 8 ?
    Car l'affection du "set" est : (7, 8) et la valeur du radiobutton est également du (7, 8).

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Mouais...
    Avec Python, une chose comme (1, 2) est un "tuple" contenant 2 entiers.
    Un string tel que "(1, 2)", c'est autre chose.
    Après vous avez le voyage d'un tuple entre Python et TCL/Tk et son retour dans la variable (pas faciles à comprendre) qui vous foutent dedans.
    Restez simple: vous avez un StringVar comme variable et 4 Radiobutton, les valeurs 'A', 'B', 'C', 'D' sont largement suffisantes pour savoir quel bouton est coché.
    Si vous voulez associer 'A', 'B', 'C', 'D' à d'autres objets (tuple ou autres), les dictionnaires sont faits pour çà.

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

  5. #5
    Futur Membre du Club
    Homme Profil pro
    CP
    Inscrit en
    Septembre 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : CP

    Informations forums :
    Inscription : Septembre 2016
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Merci pour votre réponse.
    De ce que je comprends c'est qu'entre le set, l'affectation par "Value" et ensuite le get le tuple qui est stocké dans le StringVar n'est pas renvoyé/stocké de la même façon.
    J'ai donc suivi votre conseil et j'ai ajouté un dictionnaire pour gérer mes choix et ça marche nickel.

    Merci beaucoup

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

Discussions similaires

  1. [Débutant] Problème récupération et affichage valeur TextBox
    Par BatFUT dans le forum C#
    Réponses: 3
    Dernier message: 22/06/2015, 19h16
  2. problème récupération d'une valeur
    Par coolmomodu31 dans le forum Développement Web avec .NET
    Réponses: 2
    Dernier message: 19/04/2013, 17h47
  3. Réponses: 7
    Dernier message: 07/06/2007, 15h24
  4. problème récupération valeur d'un "div"
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 29/06/2005, 10h04

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