#python #pyqt #qmouseevent
#питон #pyqt #qmouseevent
Вопрос:
У меня есть виджет, для которого установлен True
указатель мыши, и следующий код выводит значение 5, хотя я не нажимаю никаких кнопок. Кроме того, тип 5 не упоминается в документах MouseButton enum. Итак, что такое тип 5 и почему MouseEvent имеет тип 5?
Кодекс:
def mouseMoveEvent(self, event: QMouseEvent) -> None:
print(event.type())
Ответ №1:
Вы путаете со type()
свойством всех QEvents.
Фактически, в Type
перечислении QEvent MouseMove
имеет значение 5.
Если вы хотите проверить нажатые кнопки события перемещения мыши, используйте buttons()
свойство QMouseEvent .
Обратите внимание, что button()
и buttons()
не одно и то же:
button()
возвращает кнопки, которые вызывают событие, что означает, что оно всегда будет0
для событий перемещения мыши, поскольку событие вызвано движением, а не нажатием кнопки;buttons()
возвращает кнопки, когда событие было сгенерировано (и вы, вероятно, заинтересованы в этом);
Наконец, mouseMoveEvent()
всегда вызывается для виджетов, которые были mouseTracking
включены. Это происходит по умолчанию в некоторых особых случаях (обычно для классов, основанных на области прокрутки), например, в QGraphicsView с интерактивными элементами.
Комментарии:
1. Спасибо! Я просто запутался
type()
и.buttons()