По какой-то причине я могу обнаружить модификатор alt только тогда, когда сначала нажимаю alt, а затем клавишу Shift. Если я сделаю наоборот (сначала нажмите клавишу Shift, а затем клавишу Alt), обнаруженные клавиши-модификаторы - это мета-клавиша и клавиша Shift.
Активируйте окно, попробуйте клавиши, модификаторы будут напечатаны на консоли. Моя ОС - CentOS 7.6, PySide2 2.0.0 ~ alpha0
Редактировать: я пытался на другой системе с Fedora 31 и PySide2 5.13.2, тот же результат.
import os
import sys
from PySide2 import QtCore, QtGui, QtWidgets
modifierKeyInverseMap = {v: k for k, v in QtCore.Qt.KeyboardModifier.values.items()}
class Dialog(QtWidgets.QDialog):
def __init__(self, parent=None):
super(Dialog, self).__init__(parent)
layout = QtWidgets.QHBoxLayout()
button = QtWidgets.QPushButton('Test')
layout.addWidget(button)
self.setLayout(layout)
self.installEventFilter(self)
def eventFilter(self, source, event):
if event.type() == QtCore.QEvent.KeyPress:
print('-'*50)
modifiers = event.modifiers()
for k in modifierKeyInverseMap:
if k & modifiers:
print('-', modifierKeyInverseMap[k])
return QtCore.QObject.eventFilter(self, source, event)
app = QtWidgets.QApplication(sys.argv)
d = Dialog()
d.show()
d.raise_()
d.move(500, 500)
sys.exit(app.exec_())
output
--------------------------------------------------
('-', 'KeyboardModifierMask')
('-', 'MetaModifier')
('-', 'ShiftModifier')
--------------------------------------------------
('-', 'KeyboardModifierMask')
('-', 'AltModifier')
('-', 'ShiftModifier')