Проверка, является ли нажатая клавиша алфавитом или пробелом в PyQt - PullRequest
2 голосов
/ 18 июня 2019

Я реализовал пользовательский класс QTextEdit, в котором я переоцениваю метод keyPressEvent.

Я хочу проверить, находится ли нажатая клавиша среди следующих:
1. Буквы алфавита
2. Буквы нижнего регистра
3. Пробел

Если моя функцияобъявление выглядит примерно так:

def keyPressEvent(self, event):

Я мог бы сделать что-то вроде:

if event.key() in (
    QtCore.Qt.Key_A,
    QtCore.Qt.Key_B,
    QtCore.Qt.Key_C,
    QtCore.Qt.Key_D,
    ....
    ....

И так далее.

Как бы я прошел через эти значения?И как я получу доступ к самому нажатому символу?Я хочу создать строку клавиш, нажимаемых до тех пор, пока они являются алфавитами.

Ответы [ 3 ]

3 голосов
/ 18 июня 2019

Проверьте встроенные строковые методы (например, isalpha ()) и QKeyEvent.text ()

s = event.text()
if s == ' ':
    print(s+' is space')
elif s.isalpha():
    if s.isupper():
        print(s+' is upper')
    else:
        print(s+' is lower')
else:
    print(s+' is something else')
0 голосов
/ 18 июня 2019

Хорошо, у @Jonas хороший ответ, и в зависимости от того, что вы пытаетесь сделать, вам не нужно когда-либо просматривать список, вы можете просто проверить, является ли он IN списком;

myList = [Qt.Key_A,Qt.Key_B,Qt.Key_C,... Qt.Key_Z]

if event.text() in myList:
   print("In My List")
0 голосов
/ 18 июня 2019

Нашел ответ.event.key() - это шестнадцатеричное число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...