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, вы можете получить различные данные о событии мыши и обрабатывать их соответствующим образом в вашем приложении.