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 :

Connecter un menu avec un bouton radio


Sujet :

PyQt Python

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut Connecter un menu avec un bouton radio
    Bonsoir à tous,

    L'idée de mon interface (py2.7 + PyQT4) est d'offrir la possibilité à l'utilisateur de sélectionner un item par le menu ou les radiobuttons sur la fenêtre.
    J'ai réussi à se qu'ils soient groupés et exclusifs mais je souhaiterais avoir une piste pour que un item checker dans le menu, le soit aussi dans mes radoubons et inversement bien sûr. J'ai fait une base de travail que vous pouvez également commenter

    Merci d'avance pour toutes les pistes. Je sais jouer avec les signaux enfin c'est beaucoup dire puisque je vous pose un problème de connexion

    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
    import sys
    from PyQt4 import QtGui, QtCore
     
    class MaFenetre(QtGui.QMainWindow):
        def __init__(self):
            super(MaFenetre, self).__init__()
            self.signalList=['Continuous','Ramp','Sine','Square','Triangular','Sawtooth']        
            self.initUI()
            self.show()
     
        def initUI(self):
            #un menu bar
            self.createMenuBar()
            # corps de la fenetre        
            self.mainFrame()
     
        def createMenuBar(self):
            #definition du menu
            self.monMenuBar=self.menuBar()
            # Menu Signal
            self.signal = QtGui.QMenu('Signal',self.monMenuBar)  
            self.allSignal = QtGui.QActionGroup(self.monMenuBar,exclusive=True)
            for eachSignal in self.signalList:
                if eachSignal == 'Sine':
                    itemSignal=self.allSignal.addAction(QtGui.QAction(str(eachSignal),self.signal,checkable=True,checked=True))
                else:
                    itemSignal=self.allSignal.addAction(QtGui.QAction(str(eachSignal),self.signal,checkable=True))
                self.signal.addAction(itemSignal)
            self.monMenuBar.addMenu(self.signal)
     
        def mainFrame(self):
            self.main_frame = QtGui.QWidget()
            self.listeVlayout=QtGui.QVBoxLayout()
            number_group=QtGui.QButtonGroup(self.main_frame)
            for eachSignal in self.signalList:      
                self.bouttonListe=QtGui.QRadioButton(eachSignal)
                number_group.addButton(self.bouttonListe)
                if eachSignal == 'Sine':
                    self.bouttonListe.setChecked(True)
                self.listeVlayout.addWidget(self.bouttonListe)
     
            self.main_frame.setLayout(self.listeVlayout)
            self.setCentralWidget(self.main_frame)
            self.main_frame.updateGeometry()
     
    if __name__=='__main__':
        app=QtGui.QApplication(sys.argv)
        fenetre=MaFenetre()
        sys.exit(app.exec_())
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Re,

    J'ai fait comme ceci mais je suis sûr que ce n'est pythonique enfin, ça marche. Je suis preneur de toutes suppositions.

    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    import sys
    from PyQt4 import QtGui, QtCore
     
    class MaFenetre(QtGui.QMainWindow):
        def __init__(self):
            super(MaFenetre, self).__init__()
            self.signalList=['Continuous','Ramp','Sine','Square','Triangular','Sawtooth']        
            self.initUI()
            self.show()
     
        def initUI(self):
            #un menu bar
            self.createMenuBar()
            # corps de la fenetre        
            self.mainFrame()
     
        def createMenuBar(self):
            #definition du menu
            self.monMenuBar=self.menuBar()
            # Menu Signal
            self.signal = QtGui.QMenu('Signal',self.monMenuBar)  
            self.allSignal = QtGui.QActionGroup(self.monMenuBar,exclusive=True)
            self.dicoMenu={}
            for eachSignal in self.signalList:
                if eachSignal == 'Sine':
                    itemSignal=self.allSignal.addAction(QtGui.QAction(str(eachSignal),self.signal,checkable=True,checked=True))
                else:
                    itemSignal=self.allSignal.addAction(QtGui.QAction(str(eachSignal),self.signal,checkable=True))
                self.connect(itemSignal, QtCore.SIGNAL('triggered()'), self.connectMenuRadio)
                self.dicoMenu[eachSignal]=itemSignal
                self.signal.addAction(itemSignal)
            self.monMenuBar.addMenu(self.signal)
     
        def mainFrame(self):
            self.main_frame = QtGui.QWidget()
            self.listeVlayout=QtGui.QVBoxLayout()
            number_group=QtGui.QButtonGroup(self.main_frame)
            self.dicoRadio={}
            for eachSignal in self.signalList:      
                self.bouttonListe=QtGui.QRadioButton(eachSignal)
                self.dicoRadio[eachSignal]=self.bouttonListe
                number_group.addButton(self.bouttonListe)
                if eachSignal == 'Sine':
                    self.bouttonListe.setChecked(True)
                self.listeVlayout.addWidget(self.bouttonListe)
                self.bouttonListe.toggled.connect(self.connectRadioMenu)
     
            self.main_frame.setLayout(self.listeVlayout)
            self.setCentralWidget(self.main_frame)
            self.main_frame.updateGeometry()
     
        def connectMenuRadio(self):
            print '++++++++++++++++++++++'        
            print '++++++++++++++++++++++'
            print self.dicoMenu
            for eachKey, eachValue in self.dicoMenu.iteritems():
                if eachValue.isChecked():
                    print 'it is ', eachKey
                    test=self.dicoRadio[eachKey]
                    test.setChecked(True)
     
        def connectRadioMenu(self):
            print '======================'
            print '======================'
            print self.dicoRadio
            for eachKey, eachValue in self.dicoRadio.iteritems():
                if eachValue.isChecked():
                    print 'it is ', eachKey
                    test=self.dicoMenu[eachKey]
                    test.setChecked(True)
     
    if __name__=='__main__':
        app=QtGui.QApplication(sys.argv)
        fenetre=MaFenetre()
        sys.exit(app.exec_())
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

Discussions similaires

  1. Réponses: 9
    Dernier message: 24/03/2007, 22h37
  2. Problème avec des Boutons Radio
    Par Spinoza23 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 01/02/2007, 13h59
  3. [VB6]menu avec le bouton droit
    Par yoyothebest dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/05/2006, 22h01
  4. Probleme avec les boutons radio
    Par aproust dans le forum Linux
    Réponses: 3
    Dernier message: 11/05/2006, 08h05
  5. Prob avec les boutons radio
    Par King_T dans le forum Langage
    Réponses: 2
    Dernier message: 10/05/2006, 00h44

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