在 QGridLayout 中设置 QPixmap 大小以填充 space
Setting QPixmap size to fill space in QGridLayout
我一直在尝试在 QGridLayout 中显示图像,并根据它可用的 space 调整它的大小。但是我似乎无法获得合适的尺寸。
我创建了一个 class ImageWidget(Qwidget)
,它在下面被引用为 self
,并且 ImageWidget0
的一个实例被添加到 QGridLayout Layout
中 Layout.addWidget(ImageWidget0, 0, 0)
.
这就是我调整像素图大小的方式,它在布局中以指定大小毫无问题地显示图像:
self.label = QLabel(self)
self.pixmap = self.pixmap.scaled(image_size[0], image_size[1], Qt.KeepAspectRatio)
self.label.setPixmap(self.pixmap)
self.show()
然而,不同的分配方法 image_size
会产生不良结果。以下两个,分别使用小部件的大小和标签的大小,产生的 image_size
为 (100, 30),这太小了:
image_size = (self.width(), self.height())
image_size = (self.label.width(), self.label.height())
所以我尝试获取行和列的大小,而不是使用我在 QGridLayout documentation 中可以找到的唯一方法,但以下(可能不足为奇)都产生了 image_size
的 ( 0, 0):
image_size = (self.parent().layout.columnMinimumWidth(0), self.parent().layout.rowMinimumHeight(0))
image_size = (self.parentWidget().layout.columnMinimumWidth(0), self.parentWidget().layout.rowMinimumHeight(0))
需要说明的是:对于所有这些不同的像素图大小,布局本身并没有改变。如果 image_size
手动设置太大,它会被剪掉(这很好),但是当它太小时,它只会缩小到可用的 space 中。这就是让我认为问题不在于调整像素图大小的布局。
如果需要,我可以 post 更多代码,但我试图保持简洁和切题。
正如@musicamante 所指出的,在构造时使用小部件大小是没有意义的,因为尚未设置布局。我通过添加一个“加载图像”按钮来解决这个问题,该按钮可以在创建布局后添加图像,从而允许我使用以下方法正确设置大小:
image_size = (self.width(), self.height())
image_size = (self.width(), self.height())
我一直在尝试在 QGridLayout 中显示图像,并根据它可用的 space 调整它的大小。但是我似乎无法获得合适的尺寸。
我创建了一个 class ImageWidget(Qwidget)
,它在下面被引用为 self
,并且 ImageWidget0
的一个实例被添加到 QGridLayout Layout
中 Layout.addWidget(ImageWidget0, 0, 0)
.
这就是我调整像素图大小的方式,它在布局中以指定大小毫无问题地显示图像:
self.label = QLabel(self)
self.pixmap = self.pixmap.scaled(image_size[0], image_size[1], Qt.KeepAspectRatio)
self.label.setPixmap(self.pixmap)
self.show()
然而,不同的分配方法 image_size
会产生不良结果。以下两个,分别使用小部件的大小和标签的大小,产生的 image_size
为 (100, 30),这太小了:
image_size = (self.width(), self.height())
image_size = (self.label.width(), self.label.height())
所以我尝试获取行和列的大小,而不是使用我在 QGridLayout documentation 中可以找到的唯一方法,但以下(可能不足为奇)都产生了 image_size
的 ( 0, 0):
image_size = (self.parent().layout.columnMinimumWidth(0), self.parent().layout.rowMinimumHeight(0))
image_size = (self.parentWidget().layout.columnMinimumWidth(0), self.parentWidget().layout.rowMinimumHeight(0))
需要说明的是:对于所有这些不同的像素图大小,布局本身并没有改变。如果 image_size
手动设置太大,它会被剪掉(这很好),但是当它太小时,它只会缩小到可用的 space 中。这就是让我认为问题不在于调整像素图大小的布局。
如果需要,我可以 post 更多代码,但我试图保持简洁和切题。
正如@musicamante 所指出的,在构造时使用小部件大小是没有意义的,因为尚未设置布局。我通过添加一个“加载图像”按钮来解决这个问题,该按钮可以在创建布局后添加图像,从而允许我使用以下方法正确设置大小:
image_size = (self.width(), self.height())
image_size = (self.width(), self.height())