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

Python Discussion :

CheckButton, ComboBox dans une interface graphique Python


Sujet :

Python

  1. #1
    Membre régulier
    Femme Profil pro
    étudiant master
    Inscrit en
    Février 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant master

    Informations forums :
    Inscription : Février 2014
    Messages : 164
    Points : 100
    Points
    100
    Par défaut CheckButton, ComboBox dans une interface graphique Python
    Salut,

    je suis débutante dans la programmation par python, dans une fenêtre Tkinter j'ai ajouté deux CheckButton et quatre ComboBox.

    ma question est:

    quelle est la fonction qui me permet de désactiver deux ComBox et laisser les deux autres quand je coche une case?

    Est ce que je trouve quelqu'un parmi vous qui peut m'aider ou m'indiquer des exemples.

    merci

  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,

    Si vous ne montrez pas un peu comment vous avez coder çà, il sera difficile de se mettre à votre niveau.
    Une solution pour désactiver la combobox pourrait être de faire passer son "state" à "disabled"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >>> import tkinter as tk
    >>> import tkinter.ttk as ttk
    >>> app = tk.Tk()
    >>> variable = tk.StringVar()
    >>> cb = ttk.Combobox(app, textvariable=variable, values=['a', 'b', 'c'])
    >>> cb.pack()
    >>> def cb_selected(*event):
    ...     print('cb_selected')
    ...     cb.configure(state='disabled')
    ...
    >>> cb.bind('<<ComboboxSelected>>', cb_selected)
    '35515592cb_selected'
    Après avoir sélectionné une valeur, la combo ne sera plus active.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre régulier
    Femme Profil pro
    étudiant master
    Inscrit en
    Février 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant master

    Informations forums :
    Inscription : Février 2014
    Messages : 164
    Points : 100
    Points
    100
    Par défaut
    salut

    pour vous me comprenez bien, voilà le code ci-dessous. en fait, ce que je veux exactement c'est : quand je coche la 1ere case les deux dernière de combobox seront désactivé

    code.py



    merci

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Tu dois attribuer une Intvar et une command à tes checkboxs pour les utiliser comme ça.

    Essaye quelque chose comme ceci:
    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
     
    def on_cb1_toggled():
        print 'Check button 1 checked:', cb1_var.get()
     
    def on_cb2_toggled():
        print 'Check button 2 checked:', cb2_var.get()
     
    cb1_var = Tkinter.IntVar()
    bouton1=Checkbutton(fen1,text="Type d'un céréale durant des années ", 
                        variable=cb1_var, command=on_cb1_toggled)
    bouton1.grid(row=3, column=1, sticky=NW)
     
    cb2_var = Tkinter.IntVar()
    bouton2=Checkbutton(fen1,text="Comparaison des céréales pendant des années ", 
                        variable=cb2_var, command=on_cb2_toggled)
    bouton2.grid(row=5, column=1, sticky=NW)
    Si c'est ainsi que tu l'attends, alors remplace les prints par les explications que t'a donné wiztricks.

  5. #5
    Membre régulier
    Femme Profil pro
    étudiant master
    Inscrit en
    Février 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant master

    Informations forums :
    Inscription : Février 2014
    Messages : 164
    Points : 100
    Points
    100
    Par défaut
    merci Mr VinsS,

    j'ai appliqué ce que vous me conseillez, mais quand je coche la 1ere (Type d'un céréale durant des années), les deux dernières combo restent active dont on peut sélectionner, or ce que je veux c'est le contraire: quand je coche, ça ne nous donne pas la main de sélectionner

    voilà le code modifié:

    code.py

  6. #6
    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
    Citation Envoyé par noramokh Voir le message
    pour vous me comprenez bien, voilà le code ci-dessous. en fait, ce que je veux exactement c'est : quand je coche la 1ere case les deux dernière de combobox seront désactivé
    Si le sujet était de transformer une chaîne de caractère lue en une autre, je vous demanderai de poster ce qui entre et ce que vous voulez en sortie.
    Je lis "combobox seront désactivé" mais si vous ne prenez pas le temps de gribouiller un truc sur une feuille montrant "avant" --action->> "après" pour montrer "l'effet visuel" recherché, impossible d'essayer de le traduire en code. (et montrer votre code qui ne le fait pas n'aide pas du tout).
    Désolé,
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    J'ai précisé qu'il fallait remplacer les print des fonctions par le code de wiztricks, donc, ce que tu as placé n'importe où en bas de ton code, ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if bouton1.select(bouton1):
     
         bouton2.deselect(bouton2)    
         combo3.configure(state='disabled')
         combo4.configure(state='disabled')
     
    elif bouton2.select(bouton2):
     
        bouton1.deselect(bouton1)
        combo1.configure(state='disabled')
        combo2.configure(state='disabled')
    doit aller dans chacune des deux fonctions.

  8. #8
    Membre régulier
    Femme Profil pro
    étudiant master
    Inscrit en
    Février 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant master

    Informations forums :
    Inscription : Février 2014
    Messages : 164
    Points : 100
    Points
    100
    Par défaut
    bonjour,

    Est ce que ça ce que vous vouliez dire?

    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
     #check button 1
     
    def on_cb1():
       app = tk.Tk()
       variable = tk.StringVar()
       cbo1 = ttk.Combobox(app, textvariable=variable, values=['a', 'b', 'c'])
       cb.pack()
       def cb_selected(*event):
         print('cb_selected')
         cbo1.configure(state='disabled')
     
       cbo1.bind('<<ComboboxSelected>>', cb_selected)
     
    cb1_var = Tkinter.IntVar()
    retour=Tkinter.IntVar()
    bouton1=Checkbutton(fen1,text="Type d'un céréale durant des années ",variable=cb1_var,command=on_cb1)
    bouton1.grid(row=3, column=1, sticky=NW)

  9. #9
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Non.

    Ceci:
    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
     
    def on_cb1_toggled():
        if cb1_var.get():
            # Si la checkbox est checkée
            bouton2.deselect(bouton2)    
            combo3.configure(state='disabled')
            combo4.configure(state='disabled')
        else:
            # Sinon
            combo3.configure(state='enabled')
            combo4.configure(state='enabled')
     
    def on_cb2_toggled():
        if cb2_var.get():
            # Si la checkbox est checkée
            bouton1.deselect(bouton1)
            combo1.configure(state='disabled')
            combo2.configure(state='disabled')
        else:
            # Sinon
            combo1.configure(state='enabled')
            combo2.configure(state='enabled')
     
    cb1_var = Tkinter.IntVar()
    bouton1=Checkbutton(fen1,text="Type d'un céréale durant des années ", 
                        variable=cb1_var, command=on_cb1_toggled)
    bouton1.grid(row=3, column=1, sticky=NW)
     
    cb2_var = Tkinter.IntVar()
    bouton2=Checkbutton(fen1,text="Comparaison des céréales pendant des années ", 
                        variable=cb2_var, command=on_cb2_toggled)
    bouton2.grid(row=5, column=1, sticky=NW)
    pas testé ...


    Edit: je le remarque après coup dans ton code, si tu mets une commande à l'instanciation de ta checkBox n'utilise pas, en plus, le bind().
    Je ne sais pas comment se comporte Tk dans ces cas là mais les double appels ne servent à rien et conduisent à des comportements abscons de l'appli.

  10. #10
    Membre régulier
    Femme Profil pro
    étudiant master
    Inscrit en
    Février 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant master

    Informations forums :
    Inscription : Février 2014
    Messages : 164
    Points : 100
    Points
    100
    Par défaut
    vraiment Mr VinsS, je vous remercie beaucoup

    j'ai testé ce que tu m'a envoyé, et ça marche. c'est exactement ce que je veux.

    merci beaucoup d'avoir me donner un peu de votre temps.



    je remercie également Mr Wiztricks, je suis désolé si je n'ai pas bien expliqué.

Discussions similaires

  1. integrer firefox dans une interface graphique swing
    Par fraisa1985 dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 21/06/2011, 12h15
  2. "Fusion" de figure dans une interface graphique
    Par pouette13 dans le forum Interfaces Graphiques
    Réponses: 16
    Dernier message: 11/07/2007, 16h12
  3. Intégrer des programmes dans une interface graphique avec GUIDE
    Par maserati222e dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 24/05/2007, 11h30
  4. zoom dans une interface graphique type gui
    Par oregos dans le forum MATLAB
    Réponses: 1
    Dernier message: 25/04/2007, 12h45
  5. appel d'un binaire systeme dans une interface graphique
    Par elbronziero dans le forum Tkinter
    Réponses: 4
    Dernier message: 18/04/2007, 10h01

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