События мыши в PyQT5
Каким образом нужно переопределить методы mouseEvent, чтобы стало возможным изменение цвета кнопки только по нажатию на нее мышью (то есть не "нажал и отпустил", а "нажал и удерживаешь")?
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Вам надо переопределить два метода:
class PushButton(QPushButton):
def __init__(self, parent=None):
super(PushButton, self).__init__(parent)
def mousePressEvent(self, event):
print('mousePressEvent')
def mouseReleaseEvent(self, event):
print('mouseReleaseEvent')
Update
можете подсказать как именно нужно переопределить mouseReleaseEvent, я пытался и у меня не вышло. не знаю как обработать именно нажатие и удерживание
Переопределять методы надо в классе наследованном от QPushButton
import sys
from PyQt5.Qt import *
class PushButton(QPushButton):
def __init__(self, parent=None):
super(PushButton, self).__init__(parent)
self.setText('Button')
def mousePressEvent(self, event):
print('mousePressEvent')
self.setStyleSheet('background: #3A4256;')
def mouseReleaseEvent(self, event):
print('mouseReleaseEvent')
self.setStyleSheet('')
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.btn = PushButton(self)
self.setCentralWidget(self.btn)
app = QApplication(sys.argv)
ex = MainWindow()
ex.show()
sys.exit(app.exec_())
