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 :

soucis avec checkButton et RadioButton


Sujet :

Tkinter Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 147
    Par défaut soucis avec checkButton et RadioButton
    Bonjour,
    Le problème auquel je suis confronté est certainement classique mais je n'arrive pas à le résoudre.
    Le transfert des valeurs ne se fait pas et si je passe doucement la souris sur le bouton gauche alors les deux boutons gauche et droite sont activés....
    Merci d'avance pour votre aide.
    Ci-joint le 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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    import tkinter
    import re
     
    class Commandes():
     
        def __init__(self,fenetre):
            self.p=fenetre
     
        def boite(self,event=None):
            self.b=tkinter.Tk()
            self.b.title("Titre")
            self.saisie=tkinter.StringVar()
            self.entree=tkinter.Entry(self.b,text="Entrée ",textvariable=self.saisie)
            self.entree.focus_set()
            self.choix1=tkinter.IntVar()
            self.cb=tkinter.Checkbutton(self.b, text ='Coche',variable=self.choix1,command=self.activation)
            liste_radio = [('gauche',1),('droite',2)]
            self.v = tkinter.IntVar()
            self.entree.pack()
            self.cb.pack(side=tkinter.LEFT)
            for texte,val in liste_radio:
                self.r=tkinter.Radiobutton(self.b,text=texte,variable=self.v,value=val,command=self.activation)
                self.r.pack(side=tkinter.LEFT)
     
        def activation(self,event=None):
            print('Activation ou désactivation de la case à cocher\n Transfert des paramètres')
            print('zone saisie : ',self.saisie)
            print('case cochée : ',self.choix1.get())
            print('droite ou gauche :',self.v.get())
     
    class Application():
     
        def __init__(self):
            self.root = tkinter.Tk()
            self.root.title("Essai")
            self.texte1 = tkinter.Text(self.root)
            self.texte1.focus_set()
            self.texte1.pack()
            self.com=Commandes(self.root)
            self.texte1.bind('<Control-f>', self.com.boite)      
            self.root.mainloop()
     
    if __name__ == '__main__':
        Application()
    Gabriel

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

    Hum... Si nous enlevons tout ce qui ne sert à rien (côté reproduction du problème), cela se limite à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import tkinter as tk
    from tkinter.constants import *
    root = tk.Tk()
     
    box = tk.Tk()
    BUTTONS = ("gauche", 1), ("droite", 2)
    v = tk.IntVar()
    v.set(1)
    for text, value in BUTTONS:
        tk.Radiobutton(box, text=text, variable=v, value=value).pack(anchor=W)
    root.mainloop()
    Remplacez box = tk.Tk() par box = tk.Toplevel()
    "oh, miracle!"

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

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 147
    Par défaut
    Bonsoir,
    Ok merci - çà résout le problème.
    Puis j'avais oublié un .get() pour la zone_saisie. Donc mon code initial corrigé devient:
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    import tkinter
     
    class Commandes():
     
        def __init__(self,fenetre):
            self.p=fenetre
     
        def boite(self,event=None):
            self.b=tkinter.Toplevel()
            self.b.title("Titre")
            self.saisie=tkinter.StringVar()
            self.entree=tkinter.Entry(self.b,text="Entrée ",textvariable=self.saisie)
            self.entree.focus_set()
            self.choix1=tkinter.IntVar()
            self.cb=tkinter.Checkbutton(self.b, text ='Coche',variable=self.choix1,command=self.activation)
            liste_radio = [('gauche',1),('droite',2)]
            self.v = tkinter.IntVar()
            self.v.set(1)        
            self.entree.pack()
            self.cb.pack(side=tkinter.LEFT)
            for texte,val in liste_radio:
                self.r=tkinter.Radiobutton(self.b,text=texte,variable=self.v,value=val,command=self.activation)
                self.r.pack(side=tkinter.LEFT)
     
        def activation(self,event=None):
            print('Activation ou désactivation de la case à cocher\n Transfert des paramètres')
            print('zone saisie : ',self.saisie.get())
            print('case cochée : ',self.choix1.get())
            if self.v.get()==1:
                print('droite ou gauche ? : gauche')
            else:
                print('droite ou gauche ? : droite')
     
    class Application():
     
        def __init__(self):
            self.root = tkinter.Tk()
            self.root.title("Essai")
            self.texte1 = tkinter.Text(self.root)
            self.texte1.focus_set()
            self.texte1.pack()
            self.com=Commandes(self.root)
            self.texte1.bind('<Control-f>', self.com.boite)      
            self.root.mainloop()
     
    if __name__ == '__main__':
        Application()
    Encore merci.
    Gabriel

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

Discussions similaires

  1. [Flash Pascal] Souci avec un radiobutton maison
    Par Archimède dans le forum Flash Pascal
    Réponses: 4
    Dernier message: 01/07/2012, 13h53
  2. quelques soucis avec word 2000
    Par ramchou dans le forum Word
    Réponses: 3
    Dernier message: 06/09/2004, 18h13
  3. souci avec un algorithme
    Par slider16 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 22/03/2004, 17h17
  4. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52
  5. Réponses: 4
    Dernier message: 16/02/2003, 12h16

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