学习控件的鼠标事件处理 编写程序,程序开始运行时在界面中显示一个白色的圆,当在圆中按下鼠标键时颜色变为蓝色,释放鼠标时颜色为红色
时间: 2024-03-19 12:43:32 浏览: 95
好的,这个问题我可以帮你解答。你需要使用一个继承自QWidget的自定义控件,然后重写其中的鼠标事件处理函数。下面是一个实现这个功能的例子代码:
```python
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtCore import Qt
class CircleWidget(QWidget):
def __init__(self):
super().__init__()
self.color = Qt.white
def paintEvent(self, event):
painter = QPainter(self)
painter.setBrush(QColor(self.color))
painter.drawEllipse(self.rect())
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self.color = Qt.blue
self.update()
def mouseReleaseEvent(self, event):
if event.button() == Qt.LeftButton:
self.color = Qt.red
self.update()
if __name__ == '__main__':
app = QApplication([])
w = CircleWidget()
w.resize(200, 200)
w.show()
app.exec_()
```
在这个例子中,我们定义了一个CircleWidget类,继承自QWidget。在这个类中,我们重写了paintEvent函数,用来绘制圆形。我们还重写了mousePressEvent和mouseReleaseEvent函数,用来处理鼠标按下和释放事件。当鼠标左键按下时,颜色变为蓝色;当鼠标左键释放时,颜色变为红色。
在主函数中,我们创建了一个CircleWidget实例,并设置了大小和显示。最后,通过调用app.exec_()进入主循环,等待用户操作。
希望这个例子对你有所帮助!
阅读全文