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

PyQt Python Discussion :

Lier Spinbox et Combobox à plusieurs LineEdit


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    pilote
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : pilote
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Par défaut Lier Spinbox et Combobox à plusieurs LineEdit
    Bonjour à tous,

    C'est la première fois que je poste donc par avance pardon si je commets des impairs.
    Voici les données de mon problème:
    Je cherche à créer une petite application dans laquelle , lorsque l'on sélectionne entre autre une température,une pression atmosphérique , une masse etc... on obtient en bas , les vitesses(V1,Vr,V2) etc...
    La seule façon que j'ai jusqu'à présent :

    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
             #connect spinBox/combobox(signal) with madef
     
             self.SFSpinBox.valueChanged.connect(self.madef)
             self.ZpSpinBox.valueChanged.connect(self.madef)
             self.AntiIcecomboBox.activated.connect(self.madef)
             self.TOffSpinBox.valueChanged.connect(self.madef)
             self.TempeSpinBox_2.valueChanged.connect(self.madef)
             self.RuncomboBox.activated.connect(self.madef)
     
     
     
     
         def madef(self):
             SF=self.SFSpinBox.value()
             ZpSpin = self.ZpSpinBox.value()
             AntiIce = self.AntiIcecomboBox.currentText()
             ToSpin = self.TOffSpinBox.value()
             Temp = self.TempeSpinBox_2.value()
             RunCond = self.RuncomboBox.currentText()
     
     
     
             if SF == 0 and ZpSpin == 2000 and Temp == 15 and AntiIce =="ON" :
                 self.V2lineEdit.setText((str(100)))
                 self.V1lineEdit.setText((str(200)))
    J'ai donc l'intention de faire une multitude de if/elif pour chaque valeur de S/F, température masse etc...
    à la suite il y aura donc: elif SF== 1 and ZPSpin == 2000 puis elif SF == 2 and ZPSpin == 2000 etc...

    Mes deux questions:
    1/ Existe t il un autre moyen qu'une multitude de if/elif(création d'une Classe?)
    2/Sur les deux dernières lignes de code(V2lineEdit.setText((str(100))) et la suivante, j'entre 100 et 200 manuellement, or les tableaux dont je me sers font plusieurs pages. Ne puis je pas faire une liste et extraire les éléments au fur et à mesure?

    Par avance Merci.
    Images attachées Images attachées  

  2. #2
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
             if SF == 0 and ZpSpin == 2000 and Temp == 15 and AntiIce =="ON" :
                 self.V2lineEdit.setText((str(100)))
                 self.V1lineEdit.setText((str(200)))
    quelle relation existe entre les valeurs 100 et 200 et les données entrées (SF, Zp, etc) ?

    Il n'y a pas un algorithme qui les relie ? auquel cas il serait peut-être plus simple de l'implémenter dans le code.

    Ou, serait-ce issus des tables dont tu parles, des abaques en quelque sorte. Dans ce cas il faudrait voir comment elles sont faites, Python dispose de modules tellement variés pour gérer des conteneurs de données qu'il y a sûrement moyen de simplifier le code.

  3. #3
    Membre du Club
    Homme Profil pro
    pilote
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : pilote
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Par défaut
    Salut VinsS,

    Merci, tout d′abord, de t′intéresser à mon cas désespéré. :-)
    Effectivement ce sont des abaques. Comme tu le vois sur la capture ci jointe: on entre la Zp, les SF, le TOW(take off weight) etc... et on extrait, par exemple pour SF1,Zp=0 ,TOW =25000 , T˚=0 ,en haut à droite: 104,107/110,140,91.6 etc... ce sont ces dernières valeurs que je cherche à insérer dans mes lineEdit.
    Les donnés sont évidement issu de fonctions logarithmique. Il serait par conséquent possible d′en faire un algorithme mais je ne suis pas sûr que le constructeur soit disposé à fournir les données, et les déduire serait, je le crains, très au delà de mes compétences.
    Nom : Capture d’écran 2014-07-07 à 20.33.32.png
Affichages : 221
Taille : 33,3 Ko

  4. #4
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Si tu as la patience d'encoder tout ça, tu peux mettre les tables de valeur dans un dictionnaire par page.

    La page que tu montres comporte le titre "SF1", ce qui correspond au trois conditions initiales ? A savoir: ZP, Anti-Ice et Run-Cond.

    Tu pourrais dans ce cas avoir un dictionnaire de ce type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    {25000: {0: [104, (107, 110), 140, 91.6, 16, 15.8, 3035, 'L4'],
            15: [104, (107, 110), 140, 94.1, 16, 15.8, 3151, 'L4'],
            30: [ ...],
            45: [ ...]},
     26000: {0: [104, (108, 111), 143, 91.6, 16, 14.9, 3048, 'L4'],
            15: [104, (108, 111), 143, 94.1, 16, 14.8, 3166, 'L4'],
            30: [ ...],
            45: [ ...]},
     27000: {0: [ ...],
             ...}
    }
    correspondant aux trois conditions ZP, Anti-Ice et Run-Cond.

    Tu peux ensuite accéder à chaque liste de données avec les valeurs entrées.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    # appelons le dictionnaire sf1
    values = sf1[ToSpin][Temp]
    Ce n'est qu'une idée de départ, mais je pense que si les trois premières conditions te permettent déjà d'isoler la feuille de donnée, et donc le bon dictionnaire, cela devrait simplifier les choses.

  5. #5
    Membre du Club
    Homme Profil pro
    pilote
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : pilote
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Par défaut
    Merci VinsS,

    Je vais de ce pas encoder tout ça! Et tu confirmes, pour tous les cas de figure je passe par des if/elif ....?

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/07/2009, 15h30
  2. lier un meme formulaire à plusieurs
    Par lolothom dans le forum IHM
    Réponses: 7
    Dernier message: 16/10/2007, 10h22
  3. lier les données de plusieur tables automatiquement
    Par fruitix31 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 19/06/2007, 12h12
  4. Réponses: 2
    Dernier message: 09/07/2006, 17h40
  5. Combobox à plusieurs colonnes
    Par valval dans le forum Composants VCL
    Réponses: 3
    Dernier message: 14/02/2006, 02h36

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