weixin_53903225 2023-04-12 19:59 采纳率: 0%
浏览 47
已结题

matplotlib画了个图,放到QGraphicsView里面

img

    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里面,图像放大后,左、上边距不变,一直向右、下边延伸,我想把图向左边,向上面移动点;或者图像放大后一直居中,请赐教下,万分感谢

  • 写回答

1条回答 默认 最新

  • 极客智能体-在线 2023-04-12 21:11
    关注

    以下答案由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修改为相应的数值即可。

    希望能够解决您的问题。
    如果我的回答解决了您的问题,请采纳!

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月12日
  • 修改了问题 4月12日
  • 修改了问题 4月12日
  • 赞助了问题酬金15元 4月12日
  • 展开全部

悬赏问题

  • ¥15 Groimp使用疑问
  • ¥15 c++ 主窗口里面的菜单如何脱离主窗口
  • ¥15 MDK–ARM里一直找不到调试器
  • ¥15 oracle中sql查询问题
  • ¥15 vue使用gojs3.0版本,在nodeDataArray中的iconSrc使用gif本地路径,展示出来后动画是静态的,不是动态的
  • ¥100 代写个MATLAB代码,有偿
  • ¥15 ansys electronics 2021 R1安装报错,错误代码2,如图
  • ¥15 Dev-c++打字不出现中文,但出现日文
  • ¥30 搭建面包板由NE555N和SN74LS90N组成的计时电路时出了问题
  • ¥15 无源定位系统的时差估计误差标准差