[pyqt] menu

Bul -  
 bul -
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. tyrtamos Messages postés 4 Statut Membre 2
     
    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_())
    
    0
  2. bul
     
    testé, et : ça baigne
    j'adopte
    si quelqu'un proposait autre chose, mon foie, on verra
    merci beaucoup
    0