PyQt6 события
Код
import sys from PyQt6.QtCore import Qt from PyQt6.QtGui import QIcon, QAction from PyQt6.QtWidgets import QApplication, QLabel, QMainWindow, QTextEdit class MainWindow(QMainWindow): def __init__(self): super().__init__() self.label = QLabel("Нажми на окно") self.setCentralWidget(self.label) # Создаем панель основного меню main_menu = self.menuBar() file_menu = main_menu.addMenu("File") # Добавляем действия в меню (иконку, название) new_img_action = QAction(QIcon("icons/new-image.png"), "New", self) open_action = QAction(QIcon("icons/open-image.png"), "Open", self) save_action = QAction(QIcon("icons/save-image.png"), "Save", self) file_menu.addAction(new_img_action) file_menu.addAction(open_action) file_menu.addAction(save_action) def mouseMoveEvent(self, e): # Событие движения мыши print(e.button()) print(e.position()) self.label.setText("Мышь двигается") def mousePressEvent(self, e): # Событие нажатия мыши print(e.button()) print(e.position()) self.label.setText("Кнопка мыши нажата") def mouseReleaseEvent(self, e): print(e.button()) print(e.position()) self.label.setText("Кнопка мыши отпущена") def mouseDoubleClickEvent(self, e): print(e.button()) print(e.position()) self.label.setText("Двойной клик кнопки мыши") app = QApplication(sys.argv) #Создаем приложение window = MainWindow() #Создаем окно window.show() #Окно показать app.exec()
Объяснение:
Этот код представляет собой простое приложение на PyQt6, где создается основное окно с различными событиями мыши.
1. Импорты:
- Импортируется модуль sys для работы с системными аргументами.
- Импортируются необходимые классы и модули из PyQt6.QtCore, PyQt6.QtGui и PyQt6.QtWidgets.
2. Класс MainWindow:
- Класс MainWindow наследуется от QMainWindow, который является основным классом для создания окна приложения.
- В методе __init__() происходит инициализация окна:
- Вызывается конструктор родительского класса QMainWindow.
- Создается экземпляр QLabel с текстом "Нажми на окно" и устанавливается как центральный виджет окна.
- Создается панель основного меню main_menu и подменю file_menu.
- Создаются три QAction с соответствующими иконками и названиями "New", "Open" и "Save", которые добавляются в подменю file_menu.
3. Обработка событий мыши:
- Определены четыре метода, которые обрабатывают различные события мыши:
- mouseMoveEvent(self, e): Вызывается при движении мыши. Выводит информацию о кнопке мыши и её позиции, а также изменяет текст QLabel.
- mousePressEvent(self, e): Вызывается при нажатии на кнопку мыши. Выводит информацию о кнопке мыши и её позиции, а также изменяет текст QLabel.
- mouseReleaseEvent(self, e): Вызывается при отпускании кнопки мыши. Выводит информацию о кнопке мыши и её позиции, а также изменяет текст QLabel.
- mouseDoubleClickEvent(self, e): Вызывается при двойном клике кнопкой мыши. Выводит информацию о кнопке мыши и её позиции, а также изменяет текст QLabel.
4. Запуск приложения:
- Создается экземпляр QApplication с переданными системными аргументами (sys.argv).
- Создается экземпляр MainWindow и вызывается его метод show() для отображения окна.
- Вызывается метод exec() приложения для запуска основного цикла событий.
Это приложение демонстрирует создание основного окна с панелью меню и обработку различных событий мыши, таких как движение мыши, нажатие, отпускание и двойной клик. Эти события обрабатываются в соответствующих методах класса MainWindow, и изменяется текст QLabel, отображающийся в центре окна.
--------------------------------------------------------------------------------------
В этом коде e является параметром, который представляет событие мыши, передаваемое в обработчики событий мыши.
Например, в методе mouseMoveEvent(self, e):
def mouseMoveEvent(self, e): print(e.button()) print(e.position()) self.label.setText("Мышь двигается")
Здесь e является объектом QMouseEvent, который содержит информацию о событии мыши, таком как нажатая кнопка мыши (e.button()) и позиция указателя мыши (e.position()).
Аналогично, в других методах обработки событий мыши (mousePressEvent(), mouseReleaseEvent(), mouseDoubleClickEvent()), параметр e также будет объектом QMouseEvent, содержащим информацию о соответствующем событии.
Используя этот объект e, вы можете получить различные данные о событии мыши и обрабатывать их соответствующим образом в вашем приложении.