Отключение множественного нажатия клавиш PyQt
При зажатии клавиши происходит постоянная её активация, то есть зажав одну букву она продолжает печататься.
Мне нужно чтобы обрабатывался только первый сигнал.
Пробовал в keyPressEvent вызывать базовый обработчик и делать return, но без изменений. Больше идей нет.
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
bool QKeyEvent::isAutoRepeat() const
Возвращает
True, если это событие происходит от автоматически повторяющегося ключа; возвращаетFalse, если это происходит при первом нажатии клавиши.Обратите внимание, что если событие представляет собой сжатое событие с несколькими клавишами, которое частично связано с автоповтором, эта функция может возвращать либо
True, либоFalseнеопределенно.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 300, 300)
self.setWindowTitle('прога')
def keyPressEvent(self, event):
if not event.isAutoRepeat():
print('>>> нажато', event.text())
super().keyPressEvent(event)
def keyReleaseEvent(self, event):
if not event.isAutoRepeat():
print(' отжато <<<<<<', event.text())
super().keyReleaseEvent(event)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())
