pyqt怎么获取画布的点击事件
时间: 2023-08-04 22:13:35 浏览: 77
在 PyQt 中,可以使用 `mousePressEvent()` 方法来获取画布的点击事件。具体步骤如下:
1. 继承 `QWidget` 类创建一个自定义的画布部件;
2. 重写 `mousePressEvent()` 方法,在该方法中处理画布的点击事件;
3. 在 `mousePressEvent()` 方法中,通过 `event.pos()` 方法获取鼠标点击的位置。
下面是一个示例代码:
```python
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtGui import QPainter, QColor, QBrush
from PyQt5.QtCore import Qt
class CanvasWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Canvas')
def paintEvent(self, event):
qp = QPainter()
qp.begin(self)
self.draw(qp)
qp.end()
def draw(self, qp):
qp.setBrush(QColor(0, 0, 255))
qp.drawRect(10, 10, 50, 50)
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
print('Left button clicked at', event.pos())
elif event.button() == Qt.RightButton:
print('Right button clicked at', event.pos())
app = QApplication([])
canvas = CanvasWidget()
canvas.show()
app.exec_()
```
在上面的代码中,我们创建了一个自定义的 `CanvasWidget` 类,继承自 `QWidget` 类。在 `paintEvent()` 方法中,我们使用 `QPainter` 类绘制了一个蓝色的矩形。在 `mousePressEvent()` 方法中,我们通过 `event.button()` 方法获取鼠标点击的按钮,通过 `event.pos()` 方法获取鼠标点击的位置,并打印输出。最后,我们创建了一个 `QApplication`,将自定义的画布部件显示出来。
阅读全文