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 :aie:
Code:
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_()) |