[pyqt] menu

Fermé
Bul - Modifié par Bul le 4/05/2013 à 15:10
 bul - 5 mai 2013 à 13:24
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

A voir également:

2 réponses

tyrtamos Messages postés 4 Date d'inscription samedi 4 mai 2013 Statut Membre Dernière intervention 6 mai 2013 2
5 mai 2013 à 08:40
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
testé, et : ça baigne
j'adopte
si quelqu'un proposait autre chose, mon foie, on verra
merci beaucoup
0