python - PyQT 不同的图像自动缩放模式
问题描述
假设我们有一个带有 QPixmap 的 QLabel
label = QLabel
Pixmap = QPixmap('filepath')
label.setPixmap(Pixmap)
我已经提到过使用
label.setScaledContents(True)
我们可以强制图像自动缩放到标签大小(如果标签自动缩放到它,则小部件的大小)不使用它,图像将以其完整大小显示,而不取决于窗口或标签的大小。现在我希望它自动缩放到标签的大小,但保持它的纵横比。
解决方案
试试看:
import sys
from 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_())
推荐阅读
- python - 我可以使用 Python 3.7 为 AWS Linux AMI (RHEL) 创建预编译的压缩包吗?
- javascript - 为什么保存方法在查找方法回调中不起作用?
- java - 找不到按照我的目标为 Mandelbrot 上色的方法
- java - io.grpc.StatusRuntimeException:未实现:找不到方法
- r - 为什么结果变量在线性回归的汇总表中显示为系数?
- python - 未输入提示输入时如何显示消息?
- python - 如何从 Odoo 的另一个视图中的另一个字段自动填充自定义视图中的字段?
- javascript - 我的 javascript 类的自定义对象实验室无法正常运行
- docker - 如何在 docker 中查看应用程序的日志?
- android - Android/XML:当 RecyclerView 为空时,将 TextView 置于 XML 的中心