1
我们正在编写一个程序来显示来自显微镜的视频。视频的大小是2208 * 1648。这比可用的屏幕尺寸大得多。所以我使用QScrollArea来显示它。在PyQt的QScrollArea中获取视口的大小
self.scrollArea = QScrollArea(self)
self.scrollArea.setBackgroundRole(QPalette.Dark)
self.scrollArea.setWidget(self.imageLabel)
self.scrollArea.setWidgetResizable(True)
这将视频缩放到视口的大小。所以最初,视频完全显示在没有滚动条的Scrollarea的视口中。现在必须可以放大视频的特定部分。因此可以输入缩放因子。当这样做执行以下代码:
def scaleImage(self, factor):
self.scrollArea.setWidgetResizable(False)
self.imageLabel.resize(factor * self.imageLabel.pixmap().size())
self.adjustScrollBar(self.scrollArea.horizontalScrollBar(), factor)
self.adjustScrollBar(self.scrollArea.verticalScrollBar(), factor)
当显示实际的视频,图像是使用下面的函数
def set_image(self, pixmap):
self.imageLabel.set_image(pixmap, self.current_width, self.current_height)
self.imageLabel.resize(self.current_zoomfactor * self.imageLabel.pixmap().size())
此作品发送到标签。但有几个问题: 1. setWidgetResizable不尊重宽高比 2.当用户缩小时,最终图片变得小于视口,这不是我想要的。 3.我尝试使用
sizehint = self.scrollArea.viewportSizeHint()
然后我得到一个尺寸看起来或多或少正确获取视野的大小,但是当我调整窗口大小的结果不会改变。
在此先感谢
我会自己回答这个问题.... –
它证明大小已被正确调整,但我被初始值弄糊涂了,因为这个小部件并没有完全构建,所以这些初始值是不正确的。 –