[pyqt] menu

Bonjour,

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

  1. testé, et : ça baigne
    j'adopte
    si quelqu'un proposait autre chose, mon foie, on verra
    merci beaucoup
    1. 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_())