lundi 17 septembre 2012

PyQt right click button (QPushButton)


    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)

#
#



mardi 11 septembre 2012

MFnHikEffector

    Comment créer des jolies nodes de contrôles comme ceci (viewport en wireframe):





Grace a l'API maya et a MFnHikEffector:

import maya.OpenMayaAnim as OpenMayaAnim
node = OpenMayaAnim.MFnHikEffector()
node.create()