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 :

Enregistrement de paramétre


Sujet :

PyQt Python

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Points : 0
    Points
    0
    Par défaut Enregistrement de paramétre
    Salut à tout les programmeurs
    J'ai décider d'apprendre a programmer en PyQT, et j'aimerai faire un truc sympa

    Je voudrai enregistré les valeurs présents dans mes Spinbox, lorsque je choisie des éléments dans un ComboBox.

    Exemple : Spinbox1 = 4 et Spinbox2 = 5

    Si ComboBox1 = A et ComboBox2 = B
    Alors stocker valeur Spinbox1 et Spinbox2 dans un tableau de donnée : Tab = [4, 5]
    Et faire un print du tableau de donnée

    Exemple2 : Spinbox1 = 2 et Spinbox2 = 8

    Si ComboBox1 = B et ComboBox2 = D
    Alors stocker valeur Spinbox1 et Spinbox2 dans un tableau de donnée : Tab = [2, 8]
    Et faire un print du tableau de donnée

    Remarque : Les valeurs dans les Spinbox son choisit dans l'interface graphique

    Voici mon code :

    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
     
    import sys
    import time
    import serial
    import binascii
     
    from PyQt4 import QtCore, QtGui
     
    class jouer(QtGui.QMainWindow):
        def __init__(self):
     
            # Main Window #
            QtGui.QMainWindow.__init__(self)
            self.resize(310,310)
            self.setWindowTitle(' debutant ')
     
            self.ComboBox_0 = QtGui.QComboBox()
            self.ComboBox_0.setGeometry(QtCore.QRect(10,10,10,10))
            self.ComboBox_0.addItem("A")
            self.ComboBox_0.addItem("B")
     
            self.ComboBox_1 = QtGui.QComboBox()
            self.ComboBox_1.setGeometry(QtCore.QRect(10,10,10,10))
            self.ComboBox_1.addItem("C")
            self.ComboBox_1.addItem("D")
     
            ''' SpinBox 1 '''         
            self.SpinBox_1 = QtGui.QSpinBox(self)
            self.SpinBox_1.setRange(-12,12)
            self.SpinBox_1.setSingleStep(1)
            self.SpinBox_1.setValue(0)
     
            ''' SpinBox 2 '''         
            self.SpinBox_2 = QtGui.QSpinBox(self)
            self.SpinBox_2.setRange(-12,12)
            self.SpinBox_2.setSingleStep(1)
            self.SpinBox_2.setValue(0)
     
     
     
            self.GridLayout_1 = QtGui.QGridLayout()
            self.GridLayout_1.addWidget(self.ComboBox_0,     1,0,1,1)
            self.GridLayout_1.addWidget(self.ComboBox_1,     2,0,1,1)
            self.GridLayout_1.addWidget(self.SpinBox_1,     1,1,1,1)
            self.GridLayout_1.addWidget(self.SpinBox_2,     2,1,1,1)
     
            ''' Group Box '''
            self.O_GroupBox_1 = QtGui.QGroupBox()
            self.O_GroupBox_1.setLayout(self.GridLayout_1)
            ''' Main Window - Central Widget '''
            self.setCentralWidget(self.O_GroupBox_1)
     
     
    def main():
            '''Application'''
            App = QtGui.QApplication(sys.argv)
            App.setStyle("windows")
            MainWin2 = jouer()
            MainWin2.show()
            sys.exit(App.exec_() )
     
    if __name__=='__main__':
        main()
    Merci d'avance

  2. #2
    Expert éminent

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

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

    Ça me rappelle furieusement ceci:
    http://www.developpez.net/forums/d14...ointeur-objet/

    Tu ne poses pas vraiment de question, mais je suppose que tu veux savoir comment on fait.

    Les comboBox emettent un signal lorsque l'on change l'item courant, tu connectes ce signal sur une fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            self.ComboBox_0.currentIndexChanged.connect(self.on_combo_changed)
            self.ComboBox_1.currentIndexChanged.connect(self.on_combo_changed)
    Tu crées ta fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        def on_combo_changed(self, idx):
            Si ComboBox1 = A
                Si ComboBox2 = B
                    Alors Tab = [les valeurs des spinBox]
            Si ComboBox1 = B
                Si ComboBox2 = D
                    Alors Tab = [les valeurs des spinBox]
    Pas copier-coller hein, c'est du pseudo code, remplace ma prose par ce qu'il faut.

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Points : 0
    Points
    0
    Par défaut
    Wow merci pour ta réponse.

    Je voit qu'il y a des gens qui ont des même idées que moi.

    J'ai adapter ta réponse, Voici ma proposition :

    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
     
            a = [self.SpinBox_1.value()]
            b = [self.SpinBox_2.value()]
            Tab_0 = [a, b]
     
            self.ComboBox_0.currentIndexChanged.connect(self.test_1)
            self.ComboBox_1.currentIndexChanged.connect(self.test_1)
     
            a_a = [self.SpinBox_1.value()]
            b_b = [self.SpinBox_2.value()]
            Tab_1 = [a_a, b_b]
     
            self.ComboBox_0.currentIndexChanged.connect(self.test_2)
            self.ComboBox_1.currentIndexChanged.connect(self.test_2)
     
        def test_1(self, idx):
            if self.ComboBox_0 == "A" :
                if self.ComboBox_1 == "D" :
                   Tab == [a, b]
                   print Tab
     
        def test_2(self, idx):
            if self.ComboBox_0 == "B" :
                if self.ComboBox_1 == "C" :
                   Tab_1 == [a_a, b_b]
                   print Tab_1
    Remarque : Quand j'écrit juste A, il me dit que j'ai rien définie. Qaund j'écrit "A", j'ai pas de résultat.

    Merci d'avance.

  4. #4
    Membre averti
    Femme Profil pro
    Ingénieur informatique scientifique
    Inscrit en
    Mai 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique scientifique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 313
    Points : 301
    Points
    301
    Par défaut
    Salut,

    if self.ComboBox_0 == "A" :
    ça ne va pas marcher, ici self.ComboBox_0 est un widget QComboBox, ça ne peut pas valoir "A", il faudrait plutôt quelque chose du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if str(self.ComboBox_0.currentText()) == "A" :

  5. #5
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 298
    Points : 6 778
    Points
    6 778
    Par défaut
    J'ajouterai qu'il te faut conserver une référence des valeurs que tu crées.

    Donc:
    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
            self.a = [self.SpinBox_1.value()]
            self.b = [self.SpinBox_2.value()]
            self.Tab_0 = [self.a, self.b]
     
            ...
     
            self.a_a = [self.SpinBox_1.value()]
            self.b_b = [self.SpinBox_2.value()]
            self.Tab_1 = [self.a_a, self.b_b]
     
            ...
     
        ...
                   self.Tab == [self.a, self.b]
                   print self.Tab
     
        ...
                   self.Tab_1 == [self.a_a, self.b_b]
                   print self.Tab_1

  6. #6
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Points : 0
    Points
    0
    Par défaut
    Merci pour votre réponse,

    J'aimerai maintenant mettre a jour les changements qu'on fait sur le SpinBox.

    Au début on on choisie les valeurs des SpinBox, et on reporte cela en disant que c'est une combinaison de 2 ComboBox.

    Maintenant comment mettre a jour les changements qu'on fait sur le Spinbox ?
    Ainsi se changement sa pointer vers les 2 ComboBox choisie précédemment.

    Remarque : En se qui concerne ta réponse VinsS, quel est le but de conserver une référence des valeurs qu'on crées ?

    Merci d'avance

  7. #7
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 298
    Points : 6 778
    Points
    6 778
    Par défaut
    Si tu ne conserves pas de référence, le nom sera détruit dès que python sort de la fonction, ce qui veut dire que "Tab" ou "a_a" seront détruit hors de __init__ et lorsque tu les utiliseras dans la fonction test_2 tu auras une erreur, puisqu'ils n'existent plus.

    Pour les spinbox, je ne sais pas ce que tu veux mettre dedans, mais c'est aussi simple que ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        self.spinBox.setValue(val)
    avec la bonne valeur bien sur.

  8. #8
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Points : 0
    Points
    0
    Par défaut
    Merci pour ta réponse,

    Désolé, je ne me fait pas comprendre.

    Avant mon programme était :

    Exemple : Spinbox1 = 4 et Spinbox2 = 5

    Si ComboBox1 = A et ComboBox2 = B
    Alors stocker valeur Spinbox1 et Spinbox2 dans un tableau de donnée : Tab = [4, 5]
    Et faire un print du tableau de donnée

    Maintenant je désire :

    Exemple : Spinbox1 = 4 et Spinbox2 = 5

    |Si ComboBox1 = A et ComboBox2 = B
    |Alors stocker valeur Spinbox1 et Spinbox2 dans un tableau de donnée : Tab = [4, 5]
    |Et faire un print du tableau de donnée

    Si Spinbox1 = 6 et Spinbox2 = 5 (on a changer la valeur de Spinbox1 graphiquement)
    Alors stocker valeur Spinbox1 et Spinbox2 dans un tableau de donnée : Tab = [6, 5] (on a mis a jour le tableau, qui prend en compte ComboBox1 = A et ComboBox2 = B)
    Et faire un print du tableau de donnée

    Merci d'avance.

  9. #9
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 298
    Points : 6 778
    Points
    6 778
    Par défaut
    Alors, même chose que pour les combos, tu connectes le signal des spinBox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        self.spinbox_0.valueChanged.connect(self.on_spinbox_changed)
    et tu crées la fonction on_spinbox_changed(self, value) dans laquelle tu fais la mise à jour du tableau.

  10. #10
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Points : 0
    Points
    0
    Par défaut
    Merci VinsS.

    Nous comptons sur des personnes comme toi pour réussir.

    Remarque : Cela fait combien de temps que tu connait PyQT ?

Discussions similaires

  1. Réponses: 10
    Dernier message: 30/04/2011, 16h12
  2. Enregistrer les paramêtres en quittant un formulaire?
    Par Paul Van Walleghem dans le forum Windows Forms
    Réponses: 5
    Dernier message: 24/10/2008, 20h56
  3. Enregistrer des paramètres dans une macro xla
    Par Daejung dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 07/10/2008, 18h29
  4. Réponses: 6
    Dernier message: 16/10/2007, 10h15
  5. Réponses: 1
    Dernier message: 03/12/2006, 17h13

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