使用pyside2写一个用信号和槽函数进行绘图
时间: 2023-05-14 12:06:51 浏览: 138
matplotlib-pyside2-example
非常感谢您的提问。以下是一个使用 PySide2 编写的信号和槽函数进行绘图的示例代码:
```python
import sys
from PySide2.QtWidgets import QApplication, QMainWindow, QGraphicsScene, QGraphicsView, QGraphicsEllipseItem
from PySide2.QtCore import Qt, QRectF, QPointF, Signal, Slot
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建一个 QGraphicsScene 对象
self.scene = QGraphicsScene(self)
# 创建一个 QGraphicsView 对象,并将其设置为主窗口的中心部件
self.view = QGraphicsView(self.scene)
self.setCentralWidget(self.view)
# 创建一个 QGraphicsEllipseItem 对象,并将其添加到场景中
self.ellipse = QGraphicsEllipseItem(QRectF(-50, -50, 100, 100))
self.ellipse.setPos(QPointF(150, 150))
self.scene.addItem(self.ellipse)
# 连接信号和槽函数
self.ellipse.clicked.connect(self.on_ellipse_clicked)
self.ellipse.hovered.connect(self.on_ellipse_hovered)
# 定义槽函数
@Slot()
def on_ellipse_clicked(self):
print("Ellipse clicked")
@Slot(bool)
def on_ellipse_hovered(self, is_hovered):
if is_hovered:
print("Ellipse hovered")
else:
print("Ellipse not hovered")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
这个示例代码创建了一个主窗口,其中包含一个 QGraphicsView 对象和一个 QGraphicsEllipseItem 对象。通过连接 QGraphicsEllipseItem 对象的 clicked 和 hovered 信号到槽函数,可以在点击或悬停在椭圆上时触发相应的操作。
阅读全文