Raubtaube Raubtaube - 1 year ago 160
Python Question

PyQt4: Graphics View and Pixmap Size

I'm developing a GUI using QTDesigner for some image processing tasks. I have two graphic views beneath each other in a grid layout. Both should display an image and later on I will add overlays.

I create my Pixmap img_pixmap and add it to my Scene. This scene is then added to my graphics view. Since my image is much larger than my screen size I apply fitInView(). In code:

self.img_pixmap_p = self.img_scene.addPixmap(img_pixmap)
self.img_view.fitInView(self.img_scene.sceneRect(), QtCore.Qt.KeepAspectRatio)

So far, so good but how do i get rid of the white space around my image view? Ideally, I want my pixmap use the full width of the graphics view and to keep the aspect ratio, the graphics view should adjust its height accordingly. Any ideas on how to achieve that in a straight forward fashion?

Here an image to get a better idea of what I get:

Nobody likes white borders

As you can see, there are white borders, which I want to avoid.

Answer Source

Okay, I did as suggested by Pavel:

img_aspect_ratio =  float(pixmap.size().width()) / pixmap.size().height() 
width = img_view.size().width()
img_view.setFixedHeight( width / img_aspect_ratio )
img_view.fitInView(img_scene.sceneRect(), QtCore.Qt.KeepAspectRatio)

It works fine when you call this in each resizeEvent().