from PyQt5.QtWidgets import QGraphicsScene
from PyQt5.QtCore import Qt
# 创建一个场景,将窗口放置到场景中,将场景放置到graphicsView控件
self.scene = QGraphicsScene() # 创建一个场景
self.scene.addWidget(F) # 将图形元素添加到场景中
self.graphicsView.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.graphicsView.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.graphicsView.setScene(self.scene) # 将创建添加到图形视图显示窗口
我用matplotlib画了个图,放到pyqt5中QGraphicsView里面,图像放大后,左、上边距不变,一直向右、下边延伸,我想把图向左边,向上面移动点;或者图像放大后一直居中,请赐教下,万分感谢
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
可以通过设置场景的中心点来实现图像在放大后居中显示,代码如下:
# 获取graphicsView的宽和高以及放大倍数
width = self.graphicsView.width()
height = self.graphicsView.height()
scale = 2 # 假设放大2倍
# 获取图像的宽和高
data_w, data_h = F.get_size_inches() * F.dpi
# 计算场景的中心点
center_x = data_w / 2 * scale
center_y = data_h / 2 * scale
# 设置场景的中心点
self.scene.setSceneRect(-center_x, -center_y, data_w * scale, data_h * scale)
self.graphicsView.setScene(self.scene)
上述代码中,假设图像放大了两倍(scale = 2
),计算出放大后的宽和高(data_w * scale, data_h * scale
),然后通过设置场景的左上角坐标(-center_x, -center_y
)和大小,使图像居中显示(setSceneRect()
)。最后将场景设置给图形视图。
如果想将图像向上、左移动一定的像素,可以将-center_x
和-center_y
修改为相应的数值即可。
希望能够解决您的问题。
如果我的回答解决了您的问题,请采纳!