python – 在QGraphicsScene中显示图像
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 在QGraphicsScene中显示图像,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2194字,纯文字阅读大概需要4分钟。
内容图文
我有一个简短的脚本,用PIL多次修改图像.我希望能够显示中间步骤,因为它完成了它们,所以我添加了一个QGraphics场景,我试图在那里显示阶段.它将适当地调整最终阶段的大小和中心(在退出函数之前发布的最后一个阶段),但它显示中间步骤而不调整它们的大小或居中.
发布图片的代码是:
#Code to generate the image and create the loop here...
imgQ = ImageQt.ImageQt(img)
pixMap = QtGui.QPixmap.fromImage(imgQ)
scene = QtGui.QGraphicsScene()
self.ui.previewGv.setScene(scene)
pixMap = pixMap.scaled(self.ui.previewGv.size())
#scene.clear()
scene.addPixmap(pixMap)
self.ui.previewGv.repaint()
self.ui.previewGv.show()
有没有办法让它正确显示每个阶段?
解决方法:
没有循环代码和工作示例很难确定您的问题.但我有类似的测试应用程序,希望它会有所帮助.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import Image
import ImageQt
import ImageEnhance
import time
class 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_())
要点:
>如果您正在进行某些处理或在循环中休眠,则需要调用QCoreApplication.processEvents()以允许Qt进行更新.
>我正在保存对ImageQt.ImageQt(self.imgQ)的引用,否则它将崩溃.
>据我所知,你在每次迭代中创建QGraphicsScene,更好的解决方案是创建它一次然后调用scene.clear().
>缩放pixmap只是为了显示它的大小和居中是昂贵的,QGraphicsView.fitInView()为此目的.
内容总结
以上是互联网集市为您收集整理的python – 在QGraphicsScene中显示图像全部内容,希望文章能够帮你解决python – 在QGraphicsScene中显示图像所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。