ビューに画像をセットする

2017/01/14

Python2.7.10, PySide1.2.2

こんな感じ

fp = u'test.jpg'
pixmap = QtGui.QPixmap(fp)
item = QtGui.QGraphicsPixmapItem(pixmap)
scene = QtGui.QGraphicsScene(self)
scene.addItem(item)
self.setScene(scene)

Windowsで書いてよく悩むのが、ファイルパスの文字コード。Qtに与えるときはUnicodeで、存在確認等の時はcp932。 QtGui.QPixmap(fp)で間違った文字コードで与えても、ファイルが開けなくてもエラーを吐いてくれない。

# -*- coding: utf-8 -*-

import sys
from PySide import QtGui

class MyWidget(QtGui.QGraphicsView):
    def __init__(self, *argv, **keywords ):
        super(MyWidget,self).__init__(*argv,**keywords)

        fp = u'test.jpg'
        pixmap = QtGui.QPixmap(fp)
        item = QtGui.QGraphicsPixmapItem(pixmap)
        scene = QtGui.QGraphicsScene(self)
        scene.addItem(item)
        self.setScene(scene)
        self.fitInView(scene.sceneRect(), QtCore.Qt.KeepAspectRatio)

def main():
    app = QtGui.QApplication(sys.argv)
    w = MyWidget()
    w.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()