我的编程空间,编程开发者的网络收藏夹
学习永远不晚

QGraphicsView 显示图片

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

QGraphicsView 显示图片

QGraphicsView 显示图片

QGraphicsView 是 PyQt6 里负责显示图形的组件,搭配 QGraphicsScene 和 QtGui.QPixmap() 就可以显示图片,这篇教学会介绍如何在 PyQt6 窗口里加入 QGraphicsView 组件并显示图片。

快速预览:

  • QGraphicsView 显示图片

  • 改变图片尺寸

  • 设定图片位置

  • 显示多张图片

QGraphicsView 显示图片

建立 PyQt6 窗口物件后,透过 QtWidgets.QGraphicsView(widget)方法,就能在指定的组件中建立显示图形组件,QGraphicsView 建立后,需再使用 QtWidgets.QGraphicsScene()建立场景组件,再透过QtGui.QPixmap()于场景中加入图片,最后将场景加入 QGraphicsView 就可以显示图片,如果场景大小超过显示区域,会自动出现卷轴。

 from PyQt6 import QtWidgets, QtGui import sys app = QtWidgets.QApplication(sys.argv) ​ Form = QtWidgets.QWidget() Form.setWindowTitle('千牛编程思维') Form.resize(300, 300) ​ grview = QtWidgets.QGraphicsView(Form)  # 加入 QGraphicsView grview.setGeometry(20, 20, 260, 200)    # 设定 QGraphicsView 位置与大小 scene = QtWidgets.QGraphicsScene()      # 加入 QGraphicsScene scene.setSceneRect(0, 0, 300, 400)      # 设定 QGraphicsScene 位置与大小 img = QtGui.QPixmap('mona.jpg')         # 加入图片 scene.addPixmap(img)                    # 將图片加入 scene grview.setScene(scene)                  # 设定 QGraphicsView 的场景為 scene ​ Form.show() sys.exit(app.exec())

class 写法:

 from PyQt6 import QtWidgets, QtGui import sys ​ class MyWidget(QtWidgets.QWidget):     def __init__(self):         super().__init__()         self.setWindowTitle('千牛编程思维')         self.resize(300, 300)         self.ui() ​     def ui(self):         self.grview = QtWidgets.QGraphicsView(self)  # 加入 QGraphicsView         self.grview.setGeometry(20, 20, 260, 200)    # 设定 QGraphicsView 位置与大小         scene = QtWidgets.QGraphicsScene()           # 加入 QGraphicsScene         scene.setSceneRect(0, 0, 300, 400)           # 设定 QGraphicsScene 位置与大小         img = QtGui.QPixmap('mona.jpg')              # 加入图片         scene.addPixmap(img)                         # 將图片加入 scene         self.grview.setScene(scene)                  # 设定 QGraphicsView 的场景為 scene ​ if __name__ == '__main__':     app = QtWidgets.QApplication(sys.argv)     Form = MyWidget()     Form.show()     sys.exit(app.exec())

改变图片尺寸

使用 QtGui.QPixmap() 建立图片后,就能透过scaled(w, h)方法调整图片大小,下方的程序执行后,会显示缩小后的图片。

 from PyQt6 import QtWidgets, QtGui import sys app = QtWidgets.QApplication(sys.argv) ​ Form = QtWidgets.QWidget() Form.setWindowTitle('千牛编程思维') Form.resize(300, 300)                    # 窗口大小 ​ grview = QtWidgets.QGraphicsView(Form) grview.setGeometry(20, 20, 260, 200)     # QGraphicsView 位置 (20, 20) 和大小 260x200 scene = QtWidgets.QGraphicsScene() scene.setSceneRect(0, 0, 120, 160)       # QGraphicsScene 相對位置 (20, 20) 和大小 120x160 img = QtGui.QPixmap('mona.jpg') img = img.scaled(120,160)                # 调整图片大小為 120x160 scene.addPixmap(img) grview.setScene(scene) ​ Form.show() sys.exit(app.exec())

class 写法:

 from PyQt6 import QtWidgets, QtGui import sys ​ class MyWidget(QtWidgets.QWidget):     def __init__(self):         super().__init__()         self.setWindowTitle('千牛编程思维')         self.resize(300, 300)         self.ui() ​     def ui(self):         self.grview = QtWidgets.QGraphicsView(self)         self.grview.setGeometry(20, 20, 260, 200)  # QGraphicsView 位置 (20, 20) 和大小 260x200         scene = QtWidgets.QGraphicsScene()         scene.setSceneRect(0, 0, 120, 160)         # QGraphicsScene 相對位置 (20, 20) 和大小 120x160         img = QtGui.QPixmap('mona.jpg')         img = img.scaled(120,160)                  # 调整图片大小為 120x160         scene.addPixmap(img)         self.grview.setScene(scene) ​ if __name__ == '__main__':     app = QtWidgets.QApplication(sys.argv)     Form = MyWidget()     Form.show()     sys.exit(app.exec())

设定图片位置

因为使用 setSceneRect 时定位是以「中心点」为主,如果要改成熟悉的「左上角」定位,可透过简单的数学公式换算,下方的程序执行后,会将定位点改成左上角,修改 x 和 y 的数值,就可以控制图片左上角的坐标。

 from PyQt6 import QtWidgets, QtGui import sys app = QtWidgets.QApplication(sys.argv) ​ Form = QtWidgets.QWidget() Form.setWindowTitle('千牛编程思维') Form.resize(300, 300) ​ grview = QtWidgets.QGraphicsView(Form) gw = 260 gh = 200 grview.setGeometry(20, 20, gw, gh)    # QGraphicsView 的長寬改成變數 scene = QtWidgets.QGraphicsScene() img = QtGui.QPixmap('mona.jpg') img_w = 120                           # 顯示图片的寬度 img_h = 160                           # 顯示图片的高度 img = img.scaled(img_w, img_h) x = 20                                # 左上角 x 座標 y = 20                                # 左上角 y 座標 dx = int((gw - img_w) / 2) - x        # 修正公式 dy = int((gh - img_h) / 2) - y scene.setSceneRect(dx, dy, img_w, img_h) scene.addPixmap(img) grview.setScene(scene) ​ Form.show() sys.exit(app.exec())

class 写法:

 from PyQt6 import QtWidgets, QtGui import sys ​ class MyWidget(QtWidgets.QWidget):     def __init__(self):         super().__init__()         self.setWindowTitle('千牛编程思维')         self.resize(300, 300)         self.ui() ​     def ui(self):         self.grview = QtWidgets.QGraphicsView(self)         gw = 260         gh = 200         self.grview.setGeometry(20, 20, gw, gh)    # QGraphicsView 的長寬改成變數         scene = QtWidgets.QGraphicsScene()         img = QtGui.QPixmap('mona.jpg')         img_w = 120                           # 顯示图片的寬度         img_h = 160                           # 顯示图片的高度         img = img.scaled(img_w, img_h)         x = 20                                # 左上角 x 座標         y = 20                                # 左上角 y 座標         dx = int((gw - img_w) / 2) - x        # 修正公式         dy = int((gh - img_h) / 2) - y         scene.setSceneRect(dx, dy, img_w, img_h)         scene.addPixmap(img)         self.grview.setScene(scene) ​ if __name__ == '__main__':     app = QtWidgets.QApplication(sys.argv)     Form = MyWidget()     Form.show()     sys.exit(app.exec())

显示多张图片

如果要加入多张图片,就要使用 QItem 的做法,下方的程序执行后,会在场景里放入两个图片尺寸不同的 QItem。

 from PyQt6 import QtWidgets, QtGui import sys ​ app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() MainWindow.setObjectName("MainWindow") MainWindow.setWindowTitle("千牛编程思维") MainWindow.resize(300, 300) ​ grview = QtWidgets.QGraphicsView(MainWindow)  # 加入 QGraphicsView grview.setGeometry(0, 0, 300, 300)            # 设定 QGraphicsView 位置与大小 scene = QtWidgets.QGraphicsScene()            # 加入 QGraphicsScene scene.setSceneRect(0, 0, 200, 200)            # 设定 QGraphicsScene 位置与大小 img = QtGui.QPixmap('mona.jpg')               # 建立图片 img1 = img.scaled(200,50)                     # 建立不同尺寸图片 qitem1 = QtWidgets.QGraphicsPixmapItem(img1)  # 设定 QItem,內容是 img1 img2 = img.scaled(100,150)                    # 建立不同尺寸图片 qitem2 = QtWidgets.QGraphicsPixmapItem(img2)  # 设定 QItem,內容是 img2 scene.addItem(qitem1)                         # 场景中加入 QItem scene.addItem(qitem2)                         # 场景中加入 QItem grview.setScene(scene)                        # 设定 QGraphicsView 的场景為 scene ​ MainWindow.show() sys.exit(app.exec())

class 写法:

 from PyQt6 import QtWidgets, QtGui import sys ​ class MyWidget(QtWidgets.QWidget):     def __init__(self):         super().__init__()         self.setWindowTitle('千牛编程思维')         self.resize(300, 300)         self.ui() ​     def ui(self):         self.grview = QtWidgets.QGraphicsView(self)   # 加入 QGraphicsView         self.grview.setGeometry(0, 0, 300, 300)       # 设定 QGraphicsView 位置与大小         scene = QtWidgets.QGraphicsScene()            # 加入 QGraphicsScene         scene.setSceneRect(0, 0, 200, 200)            # 设定 QGraphicsScene 位置与大小         img = QtGui.QPixmap('mona.jpg')               # 建立图片         img1 = img.scaled(200,50)                     # 建立不同尺寸图片         qitem1 = QtWidgets.QGraphicsPixmapItem(img1)  # 设定 QItem,內容是 img1         img2 = img.scaled(100,150)                    # 建立不同尺寸图片         qitem2 = QtWidgets.QGraphicsPixmapItem(img2)  # 设定 QItem,內容是 img2         scene.addItem(qitem1)                         # 场景中加入 QItem         scene.addItem(qitem2)                         # 场景中加入 QItem         self.grview.setScene(scene)                  # 设定 QGraphicsView 的场景為 scene ​ if __name__ == '__main__':     app = QtWidgets.QApplication(sys.argv)     Form = MyWidget()     Form.show()     sys.exit(app.exec())

来源地址:https://blog.csdn.net/z3831583/article/details/129734209

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

QGraphicsView 显示图片

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

html图片显示不出

HTML是网页制作的常用语言,而图片作为网页设计中的重要元素之一,它能够增加页面的视觉效果,使网页更加生动。然而,在实际制作网页的过程中,我们会遇到图片无法显示的问题,本文就围绕这个问题向大家分析出现该问题的原因和解决方法。一、原因1.图片路径错误在网页制作中,链接到图片的代码通常以img元素开头,其中src属性指定了图片的路径。如果路径没有指定正确,将导致图片无法显示。2.图
2023-05-21

jquery 图片无法显示

在网页开发过程中,经常会用到图片来丰富页面内容,但有时会出现图片无法显示的情况,这个问题通常与文件路径或文件名有关。本文将介绍使用 jQuery 快速解决图片无法显示的问题。一、确认图片文件路径最常见的原因是图片文件路径错误或者图片文件不存在。我们需要确认图片文件路径是否正确。如果图片文件路径错误,浏览器就会向服务器发送错误请求,导致图片无法正常显示。还有一个常见的错误是图片文
2023-05-25

gridview如何显示图片

GridView可以通过使用ImageAdapter来显示图片。首先,在xml布局文件中,添加一个GridView组件:```xmlandroid:id="@+id/gridView"android:layout_width="match_
2023-08-14

c++如何显示图片

在 c++ 中,有四种显示图像的方法:1. sdl(跨平台);2. qt(跨平台框架);3. opencv(图像处理和计算机视觉库);4. win32 api(windows 系统)。选择方法取决于特定情况和应用程序要求。如何在 C++ 中
c++如何显示图片
2024-04-22

php怎么上传图片并显示图片

在PHP中,可以使用`$_FILES`数组来处理上传的文件。以下是一个简单的示例代码,演示了如何上传图片并显示图片:```if ($_SERVER['REQUEST_METHOD'] === 'POST') {// 检查文件是否上传成功if
2023-10-11

css如何显示svg图片

这篇文章将为大家详细讲解有关css如何显示svg图片,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。什么是csscss是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计网页的样式,使网页更
2023-06-14

VB.NET中怎么显示图片

本篇文章给大家分享的是有关VB.NET中怎么显示图片,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。VB.NET显示图片其实很简单:PictureBox1.Image=Image
2023-06-17

uniapp背景图片不显示

在uniapp中,我们可以使用 CSS 样式来设置背景图片。但有时候,我们在应用中设置背景图片时却发现图片无法正常展示,这可能是由于以下原因导致的:1. 图片路径设置错误在设置背景图片时,我们需要确保图片路径设置正确。如果路径设置错误,图片自然无法正确展示。因此,我们需要检查路径设置是否正确。2. 图片大小设置错误在设置背景图片时,我们需要确保图片大小适当。如果图片展示超过了设
2023-05-22

Android显示网络图片实例

本文实例讲述了Android显示网络图片的方法,分享给大家供大家参考。具体方法如下: 一般来说,在Android中显示一张网络图片其实是非常简单的,下面就是一个非常简单的例子: 步骤1: ① 创建你的Activity,本例中以ViewWeb
2022-06-06

hadoop存储图片怎么显示

在Hadoop中存储图片时,通常会将图片文件存储在HDFS(Hadoop Distributed File System)中。要显示这些存储在Hadoop中的图片,可以通过以下两种方式:通过Hadoop MapReduce程序读取图片文件并
hadoop存储图片怎么显示
2024-04-09

php图片显示一片乱码怎么办

php图片显示一片乱码的解决办法:1、打开相应的PHP代码文件;2、在页面头部加上“header("Content-Type:image/jpg");”代码声明图片类型即可。
2021-01-13

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录