Горячие клавиши в PyQt5
В книгах описано как привязать горячие клавиши к методам используя связку (Alt+...), но мне нужно чтобы событие нажатия клавиши на клавиатуре обрабатывалось при нажатии одной единственной клавиши (без нажатия Alt), например нужно чтобы при нажатии на клавиатуре клавиш "+" или "-" в окне программы производилось нажатие соответствующих кнопок в окне программы, а еще лучше - прямой запуск функций key_plus и key_minus.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QPushButton
app = QApplication(sys.argv)
def key_plus():
print('Key "+" pressed')
def key_minus():
print('Key "-" pressed')
main_window = QWidget()
buttons_layout = QHBoxLayout()
button_one = QPushButton('нажата клавиша "+" на клавиатуре')
button_two = QPushButton('нажата клавиша "-" на клавиатуре')
button_one.clicked.connect(key_plus)
button_two.clicked.connect(key_minus)
buttons_layout.addWidget(button_one)
buttons_layout.addWidget(button_two)
main_window.setLayout(buttons_layout)
main_window.show()
sys.exit(app.exec())
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Не обязательно связки использовать, можно и просто к одной кнопке:
button_one.setShortcut('+')button_two.setShortcut('-')
Пример:
import sys
from PyQt5.Qt import QApplication, QWidget, QHBoxLayout, QPushButton
app = QApplication(sys.argv)
def key_plus():
print('Key "+" pressed')
def key_minus():
print('Key "-" pressed')
main_window = QWidget()
buttons_layout = QHBoxLayout()
button_one = QPushButton('нажата клавиша "+" на клавиатуре')
button_one.setShortcut('+')
button_two = QPushButton('нажата клавиша "-" на клавиатуре')
button_two.setShortcut('-')
button_one.clicked.connect(key_plus)
button_two.clicked.connect(key_minus)
buttons_layout.addWidget(button_one)
buttons_layout.addWidget(button_two)
main_window.setLayout(buttons_layout)
main_window.show()
sys.exit(app.exec())