在graphicsView添加一个坐标系,并自定义位置
时间: 2024-02-28 19:52:13 浏览: 75
Qt绘制坐标轴
4星 · 用户满意度95%
在Qt中,可以使用QGraphicsView和QGraphicsScene来实现坐标系的添加和自定义位置。以下是一个简单的示例代码:
```python
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPen
from PyQt5.QtWidgets import QApplication, QGraphicsScene, QGraphicsView
class CustomView(QGraphicsView):
def __init__(self):
super().__init__()
self.setScene(QGraphicsScene())
self.setRenderHint(QPainter.Antialiasing) # 抗锯齿
self.setDragMode(QGraphicsView.ScrollHandDrag) # 拖动模式
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) # 关闭水平滚动条
self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) # 关闭垂直滚动条
self.setSceneRect(-200, -200, 400, 400) # 设置场景矩形,即坐标系范围
self.drawCoordinateSystem()
def drawCoordinateSystem(self):
pen = QPen(Qt.black)
pen.setWidth(2)
# 绘制x轴
self.scene().addLine(-200, 0, 200, 0, pen)
# 绘制y轴
self.scene().addLine(0, -200, 0, 200, pen)
# 绘制x轴刻度
for i in range(-200, 201, 50):
self.scene().addLine(i, 5, i, -5, pen)
# 绘制y轴刻度
for i in range(-200, 201, 50):
self.scene().addLine(5, i, -5, i, pen)
def resizeEvent(self, event):
self.fitInView(self.sceneRect(), Qt.KeepAspectRatio)
if __name__ == '__main__':
app = QApplication(sys.argv)
view = CustomView()
view.setGeometry(100, 100, 400, 400) # 设置视图窗口大小和位置
view.show()
sys.exit(app.exec_())
```
在上述代码中,我们继承了QGraphicsView类,并在构造函数中创建了一个QGraphicsScene对象,并将其设置为视图对象的场景。然后,我们设置了视图的一些属性,如抗锯齿、拖动模式、滚动条等。接下来,我们设置了场景矩形,即坐标系的范围,并在其中绘制了一个简单的坐标系。最后,我们通过resizeEvent函数实现了自适应窗口大小的功能。你可以根据需要修改代码中的场景矩形、坐标系绘制方法和视图窗口大小和位置等属性。
阅读全文