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

wxPython Discussion :

combobox 2 selection dans combobox 1 wxpython [Python 3.X]


Sujet :

wxPython

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 66
    Par défaut combobox 2 selection dans combobox 1 wxpython
    Bonjour,

    j'aimerai bien avoir votre aide en ce qui concerne les combobox j'ai crée un combobox dans une panel avec une liste ( visible, infrarouge, simulation)

    et j'aimerai créer un autre combobox 2 permet la sélection des types dans combobox 1 comme par exemple on a ( visible => vis01,vis04,vis06 et infrarou=>IR037,IR078 , ...,simulation=> simT12,simT52, ...)


    je trouve pas trop chose sur la sélection ou comment créer un combobox dans un autre :

    voici la partie de code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #2em panel
            pan2 = wx.Window(self.splitter, style=wx.DEFAULT_FRAME_STYLE)
            pan2.SetBackgroundColour("white")
    #choix
     
            List1 = ['Infrarouge', 'Visible','simulation']
            List2 = ['VIS04','VIS05','VIS06','VIS08','IR038','IR087','IR097','IR103','SIMT39','SIMT52','SIMT111]
     
            combobox1 = wx.ComboBox( pan2, id=wx.ID_ANY, choices = self.List1, style=wx.CB_DROPDOWN,pos=(80,5))
            combobox2 = wx.ComboBox( pan2 , id=wx.ID_ANY, choices = List2 )
    je sais pas après création de la 2em liste si faut faire une boucle ou comment lier le combobox 1 au combobox 2
    d'autre manière comment rendre combobox2 dépendant au combobox1

    voilà un exemple de ce que j'aimerai faire :

    Nom : exmpcombobox2.jpg
Affichages : 505
Taille : 3,6 Ko

    merci d'avance pour l'aide et explication ou exemple

  2. #2
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Salut.

    L'image que tu montres ressemble plus à un menu qu'à des combobox.

    Lier une combobox en fonction de ce qui est sélectionné dans une première se fait à l'aide d'événement.
    Sachant que les choix possibles de la seconde dépendent de l'item sélectionné de la première, alors une structure de type dict est préférable pour enregistrer les items.

    Un exemple simple pour te montrer comment gérer ça.

    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
    choices = dict(
        Infrarouge=('IR038','IR087','IR097','IR103',),
        Visible=('VIS04','VIS05','VIS06','VIS08',),
        Simulation=('SIMT39','SIMT52','SIMT111',),
    )
     
    def onSelectCombobox1(evt) :
        selection = evt.GetString()
        print('Sélection combobox1 :', selection)
        # Récupération de la liste relative à la clef du dict choices
        lst = choices[selection]
        # Initialisation de la sélection de combobox2 à une chaîne vide
        combobox2.SetValue('')
        # Remplissage de la combobox2 avec cette liste
        combobox2.SetItems(lst)
     
    def onSelectCombobox2(evt) :
        selection = evt.GetString()
        print('Sélection combobox2 :', selection)
     
    # list(choices) contient les clefs du dict choices
    combobox1 = wx.ComboBox(pan2, choices=list(choices))
    combobox2 = wx.ComboBox(pan2)
     
    combobox_sizer = wx.BoxSizer(wx.HORIZONTAL)
    combobox_sizer.Add(combobox1)
    combobox_sizer.Add(combobox2)
    pan2.SetSizer(combobox_sizer)
     
    # Liaisons des événements des comboboxes
    combobox1.Bind(wx.EVT_COMBOBOX, onSelectCombobox1)
    combobox2.Bind(wx.EVT_COMBOBOX, onSelectCombobox2)

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 66
    Par défaut
    Salut ,

    non je vous jure ce n'est pas un menu c'est juste j'ai pris une partie de combobox d'une autre application c'est pour ça c'est un combobox d'après même ce qu'il est sur l'application

    je vous réponds vite car y a coupure de l’électricité je vais voir demain lol je garde charge de mon pc

    merci beaucoup

  4. #4
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 66
    Par défaut
    Bonjour,

    j'ai essayé de suivre ce que m'avais expliquer mais quand j excute le code rien s'affiche meme pas le 1er combobox

    voilà

    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
    #2em panel
            pan2 = wx.Window(self.splitter, style=wx.DEFAULT_FRAME_STYLE)
            pan2.SetBackgroundColour("white")
            self.splitter.SplitVertically(pan1, pan2,100)
            choice = dict(Infrarouge=('IR038','IR087','IR097','IR103',),Visible=('VIS04','VIS05','VIS06','VIS08',),
        Simulation=('SIMT39','SIMT52','SIMT111',),),
     
        def onSelectCombobox(evt):
            selection = evt.GetString()
            print('Sélection combobox :', selection)
            list = choices[selection]
            combobox2.SetValue('')
            combobox2.SetItems(lst)
     
     
        def onSelectCombobox2(evt) :
             selection = evt.GetString()
             print('Sélection combobox2 :', selection)
             combobox = wx.ComboBox(pan2, choices=list(choice))
             combobox2 = wx.ComboBox(pan2)
             combobox_sizer = wx.BoxSizer(wx.HORIZONTAL)
             combobox_sizer.Add(combobox)
             combobox_sizer.Add(combobox2)
             pan2.SetSizer(combobox_sizer)
             combobox.Bind(wx.EVT_COMBOBOX, onSelectCombobox)
             combobox2.Bind(wx.EVT_COMBOBOX, onSelectCombobox2)
    je sais pas pourquoi

    merci

  5. #5
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Salut.

    Citation Envoyé par loula05 Voir le message
    je sais pas pourquoi
    Relis ton code, et compare-le au mien, en mettant une virgule en fin du dict choice, choice devient un tuple, et ce n'est pas ce qui est désiré.
    La déclaration des comboboxes n'a rien à faire dans la fonction onSelectCombobox2.

    Si tu as déjà du mal avec la logique de ce très simple bout de code, ça va quand même être difficile de continuer avec wx qui nécessite une bonne compréhension de l'objet python.
    Peut-être devrais-tu revoir tes objectifs et commencer avec tkinter qui est sans doute bien plus simple à apprendre que wx qui demande d'être un peu plus expérimenté et autonome avec python, surtout qu'avec tkinter, il y a beaucoup plus de documentations, exemples en tout genre sur internet et même ici sur developpez.
    Et sans doute aussi revoir les bases de python.

  6. #6
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 66
    Par défaut
    Bonjour,

    La déclaration des comboboxes n'a rien à faire dans la fonction onSelectCombobox2:

    je l'ai mis en meme alignement que def ! c'est quand je le mis en meme alignement il affiche un message d'erreur :

    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
    #2em panel
            pan2 = wx.Window(self.splitter, style=wx.DEFAULT_FRAME_STYLE)
            pan2.SetBackgroundColour("white")
            self.splitter.SplitVertically(pan1, pan2,100)
            choice = dict(Infrarouge=('IR038','IR087','IR097','IR103',),Visible=('VIS04','VIS05','VIS06','VIS08',),
        Simulation=('SIMT39','SIMT52','SIMT111',),)
     
        def onSelectCombobox(evt):
            selection = evt.GetString()
            print('Sélection combobox :', selection)
            list = choices[selection]
            combobox2.SetValue('')
            combobox2.SetItems(lst)
     
     
        def onSelectCombobox2(evt) :
             selection = evt.GetString()
             print('Sélection combobox2 :', selection)
         #declaration des combobox
        combobox = wx.ComboBox(parent, choices=list(choice))
        combobox2 = wx.ComboBox(parent)
        combobox_sizer = wx.BoxSizer(wx.HORIZONTAL)
        combobox_sizer.Add(combobox)
        combobox_sizer.Add(combobox2)
        pan2.SetSizer(combobox_sizer)
        combobox.Bind(wx.EVT_COMBOBOX, onSelectCombobox)
        combobox2.Bind(wx.EVT_COMBOBOX, onSelectCombobox2)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Traceback (most recent call last):
      File "/home/sarah/app1true.py", line 36, in <module>
        class MainPanel(wx.Panel):
      File "/home/sarah/app1true.py", line 71, in MainPanel
        combobox = wx.ComboBox(pan2, choices=list(choice))
    NameError: name 'pan2' is not defined
    pour le wxPython j’essaie .. je veux pas travailler avec TKinter c'est pas un choix

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

Discussions similaires

  1. Multi-selection dans une ComboBox ?
    Par Moloko dans le forum MFC
    Réponses: 5
    Dernier message: 07/07/2021, 17h26
  2. [VBA-E] [Débutant] selection dans une combobox
    Par Jerez62 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 07/01/2007, 20h23
  3. Remplir un formulaire après la selection dans un combobox
    Par creale10 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/09/2006, 10h51
  4. Réponses: 4
    Dernier message: 10/05/2006, 10h50
  5. [C#] Selection dans une comboBox
    Par ShinS16 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 03/01/2006, 01h58

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