2017-08-18 1 views
2

Dans la méthode mouseMoveEvent, j'ai vu le code ci-dessous pour vérifier si les boutons gauche et droit de la souris sont poussés (comme indiqué ci-dessous). Existe-t-il un moyen de vérifier si certaines touches du clavier sont actuellement enfoncées? Idéalement, j'aimerais que l'action soit exécutée lorsque la souris est cliquée et déplacée vers la gauche et qu'une certaine touche est poussée. Je ne vois pas comment utiliser keyPressEvent car il est appelé séparément de mouseMoveEvent (tout comme mousePressEvent n'est pas utilisé dans cet exemple).Déterminer si la touche est enfoncée dans l'expression (Python) (PyQT)

def mouseMoveEvent(self, event): 
    if event.buttons() & QtCore.Qt.LeftButton: 
     #run this when mouse is moved with left button clicked 
    elif event.buttons() & QtCore.Qt.RightButton: 
     #run this when mouse is moved with right button clicked 

Edit: Basé sur la méthode de commentaire de ekhumoro ressemble maintenant à ceci. Il ne fonctionne que pour les modificateurs clés:

def mouseMoveEvent(self, event): 
    modifiers = QtGui.QApplication.keyboardModifiers() 
    if bool(event.buttons() & QtCore.Qt.LeftButton) and (bool(modifiers == QtCore.Qt.ControlModifier)): 
     #run this when mouse is moved with left button and ctrl clicked 
    elif event.buttons() & QtCore.Qt.LeftButton: 
     #run this when mouse is moved with left button clicked    
    elif event.buttons() & QtCore.Qt.RightButton: 
     #run this when mouse is moved with Right button clicked 

Si quelqu'un est en mesure d'obtenir que cela fonctionne avec une clé une réponse serait grandement appréciée

+0

Voir [cette réponse] (https: //stackoverflow.com/a/8808302/984421) pour une solution (mais uniquement pour les touches de modification). – ekhumoro

+0

Si vous souhaitez utiliser d'autres clés, vous devrez remplacer 'keyPressEvent' et' keyReleaseEvent', puis définir/annuler un indicateur lorsque la touche est enfoncée/relâchée. – ekhumoro

Répondre

0
def mouseMoveEvent(self, event): 
    modifiers = QApplication.keyboardModifiers() 
    Mmodo = QApplication.mouseButtons() 
    if bool(Mmodo == QtCore.Qt.LeftButton) and (bool(modifiers == QtCore.Qt.ControlModifier)): 
     print 'yup' 
+0

mis à jour avec le déplacement de la souris – DJK