Звук по кнопке и по клавише
У меня реализован звук по нажати кнопки в программе, а как сделать так, чтобы я например нажимал 1 на клавиатуре, и выходил такой же звук, если бы я нажал на первую кнопку. Так же со второй кнопкой.
Вот код:
import sys
from PyQt5 import QtMultimedia, QtCore
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication
class Guitar(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(250, 55, 1200, 800)
self.setWindowTitle('Клавиши')
self.first_button = QPushButton('Первая клавиша(клавиша 1)', self)
self.first_button.resize(170, 50)
self.first_button.move(40, 100)
self.first_button.clicked.connect(lambda: self._play('D:\\Downloads\\First_str.mp3'))
self.second_button = QPushButton('Вторая клавиша(клавиша 2)', self)
self.second_button.resize(170, 50)
self.second_button.move(40, 200)
self.second_button.clicked.connect(lambda: self._play('D:\\Downloads\\Second_str.mp3'))
def _play(self, url):
self.url = QtCore.QUrl.fromLocalFile(url)
self.content = QtMultimedia.QMediaContent(self.url)
self.player = QtMultimedia.QMediaPlayer()
self.player.setMedia(self.content)
self.player.play()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Guitar()
ex.show()
sys.exit(app.exec_())
Ответы (1 шт):
Автор решения: Alexander Chernin
→ Ссылка
Надо перегрузить метод QWidget.keyPressEvent, либо QWidget.keyReleaseEvent.
Например (коды кнопок):
...
class Guelar(QWidget):
...
def keyPressEvent(self, e):
if e.key() == Qt.Key_1:
self._play('D:\\Downloads\\First_str.mp3')
elif e.key() == Qt.Key_2:
self._play('D:\\Downloads\\Second_str.mp3')
...