Qt ne propose pas d'event 'right click', du genre mousePressRightEvent() et c'est bien dommage. Donc c'est a nous de faire ce event, pas vraiment en créant un nouvelle fonction mais en modifiant la fonction mousePressEvent() classique. Pour cela nous devons dériver notre QPushButton a partir d'une nouvelle classe, exemple PushRightButton (le 'Q' étant réservé a Qt).
# # #import des modules Qt from PyQt4.QtGui import * from PyQt4.QtCore import * #creation de la class, on precise qu'on derive la class QPushButton entre parentheses class PushButtonRight (QPushButton): #creation du signal emetteur (emet rien pour le moment) rightClick = pyqtSignal() #creation de notre fontion __init__ avec un arg string pour le nom du futur bouton def __init__ (self, string): #on integre la classe QPushButton a notre class PushRightButton QPushButton.__init__(self, string) #modification de la fontion mousePressEvent def mousePressEvent (self, event): #on integre la fonction QPushButton.mousePressEvent(self, event) a notre fonction PushRightButton.mousePressEvent(self, event) QPushButton.mousePressEvent(self, event) #condition du click droit if event.button() == Qt.RightButton : #emittion du signal rightClick self.rightClick.emit() print ('right click') # #
Maintenant il suffit de creer un bouton grace a notre class PushRightButton et de faire la connection:
# # butRightClick = PushRightButton('hello') butRightClick.rightClick.connect(laFuturFonction) # #