2016-02-13 3 views
0

Проблема: этот код не печатает на Qt.AltModifier при работе на ноутбуке и OS X. Он согласован для обоих: PyQt и PySide. Есть ли способ проверить, есть ли QKeyEvent == ControlKey?Qt.AltModifier и OS X

from PyQt4 import QtCore, QtGui 


class Custom(QtGui.QWidget): 
    def __init__(self, *args, **kwargs): 
     QtGui.QWidget.__init__(self, *args, **kwargs) 

    def keyPressEvent(self, event): 

     if event.key()==QtCore.Qt.Key_A: 
      print 'QtCore.Qt.Key_A' 


     if event.key()==QtCore.Qt.ALT: 
      print 'QtCore.Qt.ALT' 

     if event.key()==QtCore.Qt.AltModifier: 
      print 'AltModifier' 


     if event.key()==QtCore.Qt.CTRL+QtCore.Qt.Key_A: 
      print 'QtCore.Qt.CTRL+QtCore.Qt.Key_B' 

if __name__ == "__main__": 
    app = QtGui.QApplication(sys.argv) 
    w = Custom() 
    w.show() 
    sys.exit(app.exec_()) 

ответ

1

Чтобы проверить, если кнопка ALT была нажата в качестве модификатора вам нужно проверить modifiers(), то есть:

if event.modifiers() == QtCore.Qt.AltModifier: 
    if event.key() == QtCore.Qt.Key_A: 
     print 'ALT+A' 
+0

совершенен! Благодаря! – alphanumeric