QMouseEvent имеет тип 5? Что такое тип 5?

#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()