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 :

Groupe fonctionnel de Radiobutton


Sujet :

Tkinter Python

  1. #1
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut Groupe fonctionnel de Radiobutton
    Salut les pythons,
    Je n'arrive pas a créer un groupe fonctionel de Radiobutton car j'arrive a mes fins: exécuter une commande quand on selectionne un des choix, mais j'ai un petit soucis qui est que tous les Radiobutton sont selectionner et je pense que c'est du a ce qu'il ne soit pas regrouper dans un groupe fonctionnel ou ce comportement est-il normal ?
    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
     
    from Tkinter import *
    def test_1() :
      global z
      z.configure(text='button 1')
     
    def test_2() :
      global z
      z.configure(text='button 2')
     
    def test_3() :
      global z
      z.configure(text='button 3')
     
    def test_4() :
      global z
      z.configure(text='button 4')
     
    a=Tk()
    b=Radiobutton(a, text='test 1', command=test_1)
    c=Radiobutton(a, text='test 1', command=test_2)
    d=Radiobutton(a, text='test 1', command=test_3)
    e=Radiobutton(a, text='test 1', command=test_4)
    z=Label(a)
    z.pack()
    b.pack()
    c.pack()
    d.pack()
    e.pack()
    a.mainloop()
    On doit normalement utilser un StringVar ou un IntVar pour les regrouper avec l'option variable mais je n'y arrive pas.
    Sa serai sympa de m'aider a créer un groupe fonctionnel avec les IntVar|StringVar qui ne sont pas mes meilleurs amis.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  2. #2
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    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
    from Tkinter import *
     
    def labelchange():
        z.configure(text=v.get())
     
    a=Tk()
     
    z=Label(a)
    z.pack()
     
    v = StringVar()
    v.set('button 1')
     
    Radiobutton(a, text="test 1", variable=v, value='button 1', command=labelchange).pack()
    Radiobutton(a, text="test 2", variable=v, value='button 2', command=labelchange).pack()
    Radiobutton(a, text="test 3", variable=v, value='button 3', command=labelchange).pack()
    Radiobutton(a, text="test 4", variable=v, value='button 4', command=labelchange).pack()
     
    a.mainloop()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    v = StringVar()
    v.set('button 1')
    On crée une instance de la classe variable et on mets à jour avec une première valeur (sinon tous les Radiobutton sont sélectionnés au début)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Radiobutton(a, text="test 1", variable=v, value='button 1', command=labelchange).pack()
    Ensuite on crée les Radiobutton en les associant à v (variable=v). On leurs donnent leurs valeur (value='button 1') et la commande si v change.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def labelchange():
        z.configure(text=v.get())
    Comme on utilise une méthode de z pas besoin de global.
    Puisque command viens d'indiquer que v à changer il suffit de faire v.get() pour avoir sa nouvelle valeur.

    Autre approche

    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
    from Tkinter import *
     
    def labelchange(*args):
        print args
        z.configure(text=v.get())
     
    a=Tk()
     
    z=Label(a)
    z.pack()
     
    v = StringVar()
    v.trace('w', labelchange)
    v.set('button 1')
     
    Radiobutton(a, text="test 1", variable=v, value='button 1').pack()
    Radiobutton(a, text="test 2", variable=v, value='button 2').pack()
    Radiobutton(a, text="test 3", variable=v, value='button 3').pack()
    Radiobutton(a, text="test 4", variable=v, value='button 4').pack()
     
    a.mainloop()
    Ici plus de command mais v.trace('w', labelchange).
    A chaque fois qu'un Radiobutton vas changer la valeur de v cela déclenche le callback (en écriture ici).
    Je t'ai mis un print pour que tu vois bien le tuple passé en argument par trace.

    @+
    Merci d'utiliser le forum pour les questions techniques.

  3. #3
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Re,

    Petite note sur le deuxième exemple
    Tu remarqueras que j'ai créer z avant le .trace
    Pourquoi ? Car le set juste après est pris en compte et que dans labelchange() j'utilise z.
    Si on ne souhaite pas que cela se produise et déclarer z après on dois faire le set() avant le trace().
    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
    from Tkinter import *
     
    def labelchange(*args):
        z.configure(text=v.get())
     
    a=Tk()
     
    v = StringVar()
    v.set('button 1')
    v.trace('w', labelchange)
     
    z=Label(a)
    z.pack()
     
    Radiobutton(a, text="test 1", variable=v, value='button 1').pack()
    Radiobutton(a, text="test 2", variable=v, value='button 2').pack()
    Radiobutton(a, text="test 3", variable=v, value='button 3').pack()
    Radiobutton(a, text="test 4", variable=v, value='button 4').pack()
     
    a.mainloop()
    Il est aussi possible de ne pas avoir de bouton par défaut

    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
    from Tkinter import *
     
    def labelchange(*args):
        z.configure(text=v.get())
     
    a=Tk()
     
    v = StringVar()
     
    z=Label(a)
    z.pack()
     
    Radiobutton(a, text="test 1", variable=v, value='button 1').pack()
    Radiobutton(a, text="test 2", variable=v, value='button 2').pack()
    Radiobutton(a, text="test 3", variable=v, value='button 3').pack()
    Radiobutton(a, text="test 4", variable=v, value='button 4').pack()
     
    v.trace('w', labelchange)
    v.set('Choisissez')
     
    a.mainloop()
    @++
    Merci d'utiliser le forum pour les questions techniques.

  4. #4
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Merci pour la | les réponses majistrale claire net et précis:
    j'ai parfaitement saisis la méchanique: je ne comprenait pas que le IntVar|StringVar représentait la valeur par défaut et je ne savait pas que la valeur du IntVar | StringVar changerai automatiquement quand on selectionne un Radiobutton ; implémenter un callback avec .trace est une bonne extension du sujet.
    Merci beaucoup PauseKawa tu m'as permis de me réconsilier avec les Radiobutton et les avec les String|Int Var que je comprend mieux maintenant.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

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

Discussions similaires

  1. Group by et dépendance fonctionnelle : Performance ?
    Par xanav dans le forum Langage SQL
    Réponses: 6
    Dernier message: 02/04/2012, 11h45
  2. Lier des valeurs à un RadioButton group
    Par pansoul dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 19/05/2010, 11h10
  3. index d un group de radiobutton via binding
    Par ZashOne dans le forum Windows Forms
    Réponses: 3
    Dernier message: 13/02/2009, 17h32
  4. Groupe social sur les langages fonctionnels
    Par gorgonite dans le forum Langages fonctionnels
    Réponses: 0
    Dernier message: 02/02/2009, 09h00
  5. [JTable][RadioButton]Afficher groupe de boutons dans JTable
    Par leminipouce dans le forum Composants
    Réponses: 11
    Dernier message: 21/02/2006, 17h04

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