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