【发布时间】:2017-09-20 00:26:00
【问题描述】:
from PyQt5 import QtGui, QtCore, QtWidgets
class Window(QtWidgets.QWidget):
def __init__(self):
QtWidgets.QWidget.__init__(self)
self.label = QtWidgets.QLabel(self)
self.label.setSizePolicy(QtWidgets.QSizePolicy.Ignored, QtWidgets.QSizePolicy.Ignored)
self.label.resize(800, 600)
self.label.setContentsMargins(0, 0, 0, 0);
self.pixmap = QtGui.QPixmap("image.jpg")
self.label.setPixmap(self.pixmap)
self.label.setMinimumSize(1, 1)
self.label.installEventFilter(self)
layout = QtWidgets.QVBoxLayout(self)
layout.addWidget(self.label)
def eventFilter(self, source, event):
if (source is self.label and event.type() == QtCore.QEvent.Resize):
self.label.setPixmap(self.pixmap.scaled(
self.label.size(), QtCore.Qt.KeepAspectRatio))
return super(Window, self).eventFilter(source, event)
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
window = Window()
window.show()
window.resize(800, 600)
sys.exit(app.exec_())
这是我的应用程序,我的目标很简单 - 拥有一个填充整个窗口并在窗口调整大小后调整大小的图像。
此代码在调整图像大小时可以正常工作,但标签并未覆盖整个窗口,我有那些“边框”。如何删除它们/将标签调整为窗口大小? 如果这改变了事情,我正在 Windows 上工作。
这就是我现在得到的效果。
【问题讨论】:
-
应用程序的期望行为是什么?当图片
image.jpg不 适合窗口时(如在给定的屏幕截图中),会发生什么?图片的宽高比应该改变吗?还是应该裁剪部分图片? -
@Matho 图片应该覆盖整个窗口,如果它太小应该放大。现在,如果我调整图片比例,但我不想要那些灰色的“边框”。
-
图像(和窗口小部件)的纵横比应该保留还是必须遵循窗口的纵横比?
-
我认为它应该或多或少地保留下来,但我也会采取第二种选择:)
标签: python qt pyqt window label