栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在QGraphicsScene中显示图像

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在QGraphicsScene中显示图像

没有循环代码和有效示例,很难确定您的问题。但是我有类似的测试应用程序,希望对您有所帮助。

#!/usr/bin/env python# -*- coding: utf-8 -*-import sysfrom PyQt4.QtCore import *from PyQt4.QtGui import *import Imageimport ImageQtimport ImageEnhanceimport timeclass TestWidget(QWidget):    def __init__(self, parent=None):        QWidget.__init__(self, parent)        self.scene = QGraphicsScene()        self.view = QGraphicsView(self.scene)        self.button = QPushButton("Do test")        layout = QVBoxLayout()        layout.addWidget(self.button)        layout.addWidget(self.view)        self.setLayout(layout)        self.button.clicked.connect(self.do_test)    def do_test(self):        img = Image.open('image.png')        enhancer = ImageEnhance.Brightness(img)        for i in range(1, 8): img = enhancer.enhance(i) self.display_image(img) QCoreApplication.processEvents()  # let Qt do his work time.sleep(0.5)    def display_image(self, img):        self.scene.clear()        w, h = img.size        self.imgQ = ImageQt.ImageQt(img)  # we need to hold reference to imgQ, or it will crash        pixMap = QPixmap.fromImage(self.imgQ)        self.scene.addPixmap(pixMap)        self.view.fitInView(QRectF(0, 0, w, h), Qt.KeepAspectRatio)        self.scene.update()if __name__ == "__main__":    app = QApplication(sys.argv)    widget = TestWidget()    widget.resize(640, 480)    widget.show()    sys.exit(app.exec_())

要点:

  • 如果您正在执行某些处理或

    sleep
    循环,则需要调用
    QCoreApplication.processEvents()
    以允许Qt进行更新。

  • 我正在保存对

    ImageQt.ImageQt
    self.imgQ
    )的引用,否则它将崩溃。

  • 据我了解,您正在

    QGraphicsScene
    每次迭代中创建更好的解决方案,以创建一次,然后调用
    scene.clear()

  • 仅为了显示其大小和居中而缩放像素图是昂贵的,

    QGraphicsView.fitInView()
    为此目的而制造。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/626258.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号