[Python] Récup param interface graphique

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour,
Voilà mon problème :
J'ai créé une interface graphique avec différents onglets qui ont une liste de paramètres liée à une liste. Je m'explique... J'ai une liste de paramètres (dont la taile est récupérée dans une partie de mon programme). Un fois que j'ai la taille de cette liste, ainsi que les paramètres qui la composent, je créé un onglet qui présente autant "d'éléments" qu'il y a de paramètres.
Maintenant, je voudrais, quand je clique sur un des éléments (qui correspond à un des paramètres) pouvoir récupérer le paramètre en question.
Voici mon code pour vous aider à comprendre :
"for t in matrice_lin.keys() :
list_param_lin.append(t)
i = 0
while (i < len(list_param_lin)) :
inputmenu.add_command(label = list_param_lin[i], command = bt_click)
i += 1"

Que je clique sur le premier élément ou sur le dernier, la fonction appelée est bt_click(), mais je ne connais pas le paramètre sur lequel j'ai cliqué.
Quelqu'un aurait une idée?
Merci beaucoup

6 réponses

  1. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    Ils sont présentés sous quelle forme tes paramètres à l'écran ?

    Des zones de texte, des checkbox, autre ?
    0
    1. Utilisateur anonyme
       
      Salut Seb
      Je vais devoir te citer dans les remerciements de mon rapport de stage.....
      Mes paramètres sont affichés comme dans ton explorateur internet :
      File
      New
      Open
      ...
      Quit
      0
  2. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    Dans un menu, donc ?

    Je ne comprend pas bien:
    La liste de tous les paramètres sont dans un menu ?

    ça ne serait pas plus simple des les mettre dans une fenêtre ?
    ça serait plus pratique pour les modifier.

    (Dans mon appli, j'ai beaucoup de paramètres: je les ais mis dans une fenêtre, pas un menu. J'ai utilisé des onglets:
    https://sebsauvage.net/python/webgobbler/screenshot2.png )
    0
    1. Utilisateur anonyme
       
      Si effectivement ce serait plus simple.....
      Alors dans ce cas, faudrait que je créé autant de Listbox que de paramètres, un peu comme dans ton "Output Options".
      Comment je peux faire ça?
      T'as un exemple de code stp?
      Merci
      0
  3. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    Alors dans ce cas, faudrait que je créé autant de Listbox que de paramètres

    Tout à fait !

    En principe, on place l'interface graphique dans une classe.
    Comme membre de cette classe, on stock la liste des éléments graphiques qu'on a créés.

    Voilà l'idée générale:

    class monApplication:
    
        def __init__(self):
            self.listeWidgets = []
            self.creeInterface()    
        
        def creeInterface(self):
            ...création des menus, fenêtres, onglets...
            ...création des widgets paramètres et ajout à self.listeWidgets...
            ...création d'un bouton "Lancer" avec command=bt_click...
        
        def bt_click(self):
             Lecture des valeurs contenue dans les widgets stockés dans self.listeWidgets
             Lancement de Print_lin() avec ces paramètres.
    


    Comme ça, tu peux bien séparer le code qui s'occupe de l'interface graphique du code qui s'occupe du traitement des données.

    C'est une bonne habitude à prendre: Séparer le code qui fait les traitement du code qui s'occupe de l'interface graphique.
    0
    1. Utilisateur anonyme
       
      OK
      Je te remercie
      Juste une autre petite question...
      C'est quelle fonction qui permet de créer des onglets comme ceux de ta page (Image generation, storage, Network, ...)?
      Merci
      0
  4. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    Pour les onglets, j'ai utilisé un petit module qui apporte des fonctionnalités supplémentaires à tkinter:
    PMW (Python Megawidgets).

    http://pmw.sourceforge.net/
    0
    1. Utilisateur anonyme
       
      OK
      merci
      0
    2. Utilisateur anonyme
       
      Euh....
      Désolé mais je le mets où le dossier Pmw?
      Dans /opt/ActivePython-2.4/bin ?
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    En principe les modules Python doivent être installés dans:
    C:\Python24\Lib\site-packages\

    (Je n'utilise pas la version ActiveState de Python, mais la distribution standard. Le répertoire sera sans doute différent pour la version ActiveState).

    Donc le répertoire pmw doit se retrouver là:
    C:\Python24\Lib\site-packages\Pmw\
    0
  7. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    site-packages contient en principe tous les modules qui ont été installés (tu dois d'ailleurs y retrouver matplotlib, par exemple)
    0
    1. Utilisateur anonyme
       
      ok ça marche
      merci
      0