PyQt: Как правильно отображать изображение?

Я хочу отобразить изображение в pyqt, поэтому я использовал метку и параметр pixmap, а scaledContents, но изображение искажено. Должен ли я использовать другой виджет или сделать что-то еще? Спасибо.

Это код:

from PyQt4 import QtCore, QtGui
self.label.setPixmap(QtGui.QPixmap(_fromUtf8('image.jpg')))
self.label.setScaledContents(True)

Я использую QtDesigner.

Я пробовал это: self.label.pixmap().scaled(QtCore.QSize(self.label.size()), QtCore.Qt.KeepAspectRatio, QtCore.Qt.FastTransformation)

но изображения не изменяются в соответствии с меткой.

Ответ 1

Используйте метод scaled(const QSize, Qt::AspectRatioMode, Qt::TransformationMode) для pixmap, у него есть опция Qt::KeepAspectRatio, которая не деформирует изображение. По умолчанию следует игнорировать соотношение сторон

Также обратите внимание, что метод scaled возвращает масштабированный pixmap, поэтому его необходимо использовать следующим образом:

myPixmap = QtGui.QPixmap(_fromUtf8('image.jpg'))
myScaledPixmap = myPixmap.scaled(self.label.size(), Qt.KeepAspectRatio)
self.label.setPixmap(myScaledPixmap)

Ответ 2

yourPixmapLabel.setScaledContents(True) масштабирует pixmap, чтобы заполнить свободное пространство и должно быть достаточно. в противном случае мы увидим некоторый код ex