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 :

Désactiver un RadioSelect


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Par défaut Désactiver un RadioSelect
    bonjour,

    Je souhaiterai (sous certaines conditions) pouvoir désactiver un RadioSelect (c'est-à-dire grisé et rendre non sélectionnable), cependant je ne trouve pas la commande.
    J'ai déjà essayer :
    radiobuttons.configure(state = Tkinter.DISABLED)
    Mais apparemment l'option state n'existe pas avec des Pmw.RadioSelect(), alors qu'elle fonctionne très bien pour Pmw.EntryField()
    idem pour radiobuttons.deselect()

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    import Tkinter
    import Pmw
     
    class Demo:
        def __init__(self, parent):
            # Create and pack a horizontal RadioSelect widget.
            horiz = Pmw.RadioSelect(parent,
                    labelpos = 'w',
                    command = self.callback,
                    label_text = 'Horizontal',
                    frame_borderwidth = 2,
                    frame_relief = 'ridge'
            )
            horiz.pack(fill = 'x', padx = 10, pady = 10)
     
            # Add some buttons to the horizontal RadioSelect.
            for text in ('Fruit', 'Vegetables', 'Cereals', 'Legumes'):
                horiz.add(text)
            horiz.invoke('Cereals')
     
            # Create and pack a multiple selecInfoBulletion RadioSelect widget.
            self.multiple = Pmw.RadioSelect(parent,
                    labelpos = 'w',
                    command = self.multcallback,
                    label_text = 'Multiple\nselection',
                    frame_borderwidth = 2,
                    frame_relief = 'ridge',
                    selectmode = 'multiple',
            )
            self.multiple.pack(fill = 'x', padx = 10)
     
            # Add some buttons to the multiple selection RadioSelect.
            for text in ('Apricots', 'Eggplant', 'Rice', 'Lentils'):
                self.multiple.add(text)
            self.multiple.invoke('Rice')
     
            # Create and pack a vertical RadioSelect widget, with checkbuttons.
            self.checkbuttons = Pmw.RadioSelect(parent,
                    buttontype = 'checkbutton',
                    orient = 'vertical',
                    labelpos = 'w',
                    command = self.checkbuttoncallback,
                    label_text = 'Vertical,\nusing\ncheckbuttons',
                    hull_borderwidth = 2,
                    hull_relief = 'ridge',
            )
            self.checkbuttons.pack(side = 'left', expand = 1, padx = 10, pady = 10)
     
            # Add some buttons to the checkbutton RadioSelect.
            for text in ('Male', 'Female'):
                self.checkbuttons.add(text)
            self.checkbuttons.invoke('Male')
            self.checkbuttons.invoke('Female')
     
            # Create and pack a RadioSelect widget, with radiobuttons.
            radiobuttons = Pmw.RadioSelect(parent,
                    buttontype = 'radiobutton',
                    orient = 'vertical',
                    labelpos = 'w',
                    command = self.callback,
                    label_text = 'Vertical,\nusing\nradiobuttons',
                    hull_borderwidth = 2,
                    hull_relief = 'ridge',
            )
            radiobuttons.pack(side = 'left', expand = 1, padx = 10, pady = 10)
     
            # Add some buttons to the radiobutton RadioSelect.
            for text in ('Male', 'Female', 'Both', 'Neither'):
                radiobuttons.add(text)
            radiobuttons.invoke('Both')
     
            ###################################################################
            # Desactivation du radiobuttons, mais ca ne fonctionne pas
            if "true" :
                    radiobuttons.configure(state=Tkinter.DISABLED)
     
        def callback(self, tag):
            # This is called whenever the user clicks on a button
            # in a single select RadioSelect widget.
            print 'Button', tag, 'was pressed.'
     
        def multcallback(self, tag, state):
            # This is called whenever the user clicks on a button
            # in the multiple select RadioSelect widget.
            if state:
               action = 'pressed.'
            else:
               action = 'released.'
     
            print 'Button', tag, 'was', action, \
                    'Selection:', self.multiple.getcurselection()
     
        def checkbuttoncallback(self, tag, state):
            # This is called whenever the user clicks on a button
            # in the checkbutton RadioSelect widget.
            if state:
               action = 'pressed.'
            else:
               action = 'released.'
     
            print 'Button', tag, 'was', action, \
                    'Selection:', self.checkbuttons.getcurselection()
     
     
    if __name__ == '__main__':
        gui = Tkinter.Tk()
        gui.geometry(
            '%dx%d+0+0' % 
            (gui.winfo_screenwidth(), 
            gui.winfo_screenheight())) 
        demo = Demo(gui) 
        gui.geometry('500x400+0+0')   
        gui.title("Essai RadioSelect")
        gui.mainloop()
    Je suis parti du code suivant : http://pmw.sourceforge.net/doc/RadioSelect.html

    Merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 160
    Par défaut Réponse d'un apprenti
    Je suis loin d'être un pro car j'apprends aussi, mais voici une suggestion:

    Il semble qu'il n'existe pas d'option "state" directement pour le Radioselect, qui est un groupe de boutons, rappelons le. Donc à mon avis , si tu veux désactiver un bouton ou tous les boutons de radioselect, il faut utiliser state=DISABLED pour chacun des bouton composant le radioselect que tu veux désactiver. En effet, les widgets Tkinter composant les Pmw ont eux une option "state".
    Je ne sais pas exactement comment faire dans le cas d'un radioselect, mais voici un exemple que j'ai utilisé pour modifier le widget entry contenu dans un Pmw.combobox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            self.moncombobox.component('entryfield_entry').configure(disabledforeground="black", disabledbackground="white", state=DISABLED)
    Tu peux t'en inspirer en sachant que dans le radioselect, les boutons semblent etre repérés par un index. Pour un peu plus d'infos, vois les composant (components) de radioselect sur le lien où tu as pris ton exemple, surtout pour savoir comment les désigner pour remplacer "entryfield_entry" de mon exemple par la désignation du bouton que tu veux désactiver.

    Voilà, en espérant que ma maigre expérience de débutant puisse t'aider.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Par défaut
    Effectivement, merci beaucoup, j'ai trouvé une solution dans ce sens là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                    radiobuttons.component("entry").configure(state='disabled')
                    radiobuttons.component("arrowbutton").unbind("<Button-1>")
    ou je désactive la zone d'édition puis la liste déroulante

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

Discussions similaires

  1. Désactiver la multi-sélection d'une grille
    Par Riko dans le forum Composants VCL
    Réponses: 6
    Dernier message: 17/06/2003, 09h47
  2. Comment désactiver Ctrl+Alt+Del sous Windows XP
    Par ETOKA dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 04/06/2003, 13h34
  3. Désactivation de la souris
    Par mika dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 13/03/2003, 13h15
  4. Désactiver les touches F1, F2, F3, F4, F5 dans IE
    Par ZiZouJH dans le forum Flash
    Réponses: 7
    Dernier message: 17/02/2003, 09h59
  5. Réponses: 8
    Dernier message: 17/05/2002, 09h08

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