如果layout.addWidget(sb)
注释掉该行,小部件将捕获事件(在本例中为键盘事件)。
如果你离开队伍,那就不行。
我需要旋转框和键盘事件。
import sys
import PySide6.QtWidgets
from PySide6.QtCore import *
from PySide6.QtWidgets import *
from PySide6.QtGui import *
class Main(QWidget):
def __init__(self, parent=None):
super(Main, self).__init__(parent)
self.resize(300,300)
layout = QVBoxLayout()
w = QWidget()
sb = QSpinBox()
sb.setRange(-10,10)
layout.addWidget(w)
#layout.addWidget(sb) # ?!
self.installEventFilter(self)
self.setLayout(layout)
def eventFilter(self, watched: QObject, event: QEvent):
if event.type() == QEvent.Type.KeyPress:
if event.key() == Qt.Key.Key_S:
print("__S__")
return True
elif event.key() == Qt.Key.Key_A:
print("__A__")
return True
return False
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Main()
ex.show()
sys.exit(app.exec())