PyQT 不同的图像自动缩放模式

假设我们有一个带有 QPixmap 的 QLabel


label = QLabel

Pixmap = QPixmap('filepath')

label.setPixmap(Pixmap)

我已经提到通过使用


label.setScaledContents(True) 

我们可以强制图像自动缩放到标签大小(如果标签自动缩放到它,小部件也是一个)如果不使用它,图像将以全尺寸显示,而不取决于窗口或标签的大小。现在我希望它自动缩放到标签的大小,但保持它的纵横比。


拉风的咖菲猫
浏览 278回答 1
1回答

白衣染霜花

尝试一下:import sysfrom PyQt5.QtWidgets import *from PyQt5.QtCore    import *from PyQt5.QtGui     import * class MainWindow(QMainWindow):    def __init__(self):        super().__init__()        centralWidget = QWidget()        self.setCentralWidget(centralWidget)          self.label  = QLabel()         self.pixmap = QPixmap("head.jpg")        self.label.setPixmap(self.pixmap.scaled(self.label.size(),                Qt.KeepAspectRatio, Qt.SmoothTransformation))        self.label.setSizePolicy(QSizePolicy.Expanding,                QSizePolicy.Expanding)        self.label.setAlignment(Qt.AlignCenter)        self.label.setMinimumSize(100, 100)         layout = QGridLayout(centralWidget)            layout.addWidget(self.label)            def resizeEvent(self, event):        scaledSize = self.label.size()                               scaledSize.scale(self.label.size(), Qt.KeepAspectRatio)        if not self.label.pixmap() or scaledSize != self.label.pixmap().size():            self.updateLabel()        def updateLabel(self):        self.label.setPixmap(self.pixmap.scaled(                        self.label.size(), Qt.KeepAspectRatio,                Qt.SmoothTransformation))if __name__ == "__main__":    import sys    app = QApplication(sys.argv)    window = MainWindow()    window.show()    sys.exit(app.exec_())
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python