[pyqt] menu
Bul
-
bul -
bul -
Bonjour,
extrait du code "simplifié" :
dans choix(), j'aimerais afficher le texte de la ligne cliquée du menu
( Alain, Bernard ou Claude ) j'ai tenté plein de trucs, je n'y arrive pas.
comment passer en paramètre "texte du menu cliqué" ?
fonction choix() unique, addAction créé comme dans l'exemple
si vous pouviez m'aider
merci
extrait du code "simplifié" :
from PyQt4 import QtCore, QtGui
import sys
class Window(QtGui.QMainWindow):
def __init__(self):
super(Window, self).__init__()
QtGui.QWidget.__init__(self, None)
mnuCde=self.menuBar().addMenu('Cde')
lib=['Alain','Bernard','Claude']
for lig in range(0,len(lib)):
mnuCde.addAction( lib[lig],self.choix )
def choix(self):
print('ok')
app=QtGui.QApplication(sys.argv)
win=Window()
win.show()
sys.exit(app.exec_())
dans choix(), j'aimerais afficher le texte de la ligne cliquée du menu
( Alain, Bernard ou Claude ) j'ai tenté plein de trucs, je n'y arrive pas.
comment passer en paramètre "texte du menu cliqué" ?
fonction choix() unique, addAction créé comme dans l'exemple
si vous pouviez m'aider
merci
2 réponses
-
Bonjour,
Je n'ai pas trouvé comment récupérer le texte de l'item à partir des méthodes PyQt, mais j'ai une solution: passer un paramètre avec partial du module functools. On modifie le code comme suit:
import sys from functools import partial from PyQt4 import QtCore, QtGui ############################################################################# class Window(QtGui.QMainWindow): def __init__(self, parent=None): super(Window, self).__init__(parent) self.mnuCde=self.menuBar().addMenu('Cde') lib=['Alain','Bernard','Claude'] for lig in range(0,len(lib)): self.mnuCde.addAction(lib[lig], partial(self.choix, lib[lig])) def choix(self, texte): print(texte) ############################################################################# app=QtGui.QApplication(sys.argv) win=Window() win.show() sys.exit(app.exec_()) -
testé, et : ça baigne
j'adopte
si quelqu'un proposait autre chose, mon foie, on verra
merci beaucoup