Menubar en appel dynamique (dans une autre class)
bonjour,
Je cherche à crée un menubar que j’aurais initialiser dans une autre classe. J’arrive à afficher mon menu correctement. Cependant, je ne peux pas declancher un evenenent lors d’un click par exemple comme puis-je faire pour y arrivée ?
code actuel
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
| import sys
from PyQt5.QtWidgets import QHBoxLayout, QAction, QApplication, QMainWindow
class MM:
def __init__(self,P):
bar = P.menuBar()
file = bar.addMenu("File")
file.addAction("New")
save = QAction("Save",P)
save.setShortcut("Ctrl+S")
file.addAction(save)
edit = file.addMenu("Edit")
edit.addAction("copy")
edit.addAction("paste")
quit = QAction("Quit",P)
file.addAction(quit)
file.triggered.connect(self.processtrigger)
P.setWindowTitle("menu demo")
def processtrigger(self, q):
print(q.text()+" is triggered")
class menudemo(QMainWindow):
def __init__(self, parent = None):
super(menudemo, self).__init__(parent)
t = MM(self)
def main():
app = QApplication(sys.argv)
ex = menudemo()
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main() |
le but est d’arrivé a faire ça (voir code ci-dessous) en ayant la menubar dans un class séparé
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
| import sys
from PyQt5.QtWidgets import QHBoxLayout, QAction, QApplication, QMainWindow
class menudemo(QMainWindow):
def __init__(self, parent = None):
super(menudemo, self).__init__(parent)
bar = self.menuBar()
file = bar.addMenu("File")
file.addAction("New")
save = QAction("Save",self)
save.setShortcut("Ctrl+S")
file.addAction(save)
edit = file.addMenu("Edit")
edit.addAction("copy")
edit.addAction("paste")
quit = QAction("Quit",self)
file.addAction(quit)
file.triggered.connect(self.processtrigger)
self.setWindowTitle("menu demo")
def processtrigger(self, q):
print(q.text()+" is triggered")
def main():
app = QApplication(sys.argv)
ex = menudemo()
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main() |
merci d’avance de votre aide bonne journée/soirée