我们正在编写一个显示显微镜视频的程序。视频的大小是2208*1648。这比可用的屏幕尺寸大得多。所以我用QScrollArea来显示它。在
self.scrollArea = QScrollArea(self)
self.scrollArea.setBackgroundRole(QPalette.Dark)
self.scrollArea.setWidget(self.imageLabel)
self.scrollArea.setWidgetResizable(True)
这会将视频缩放到视口的大小。因此,最初的视频完全显示在没有滚动条的滚动区域的视口中。现在必须可以放大视频的特定部分。因此可以输入zoomfactor。完成后,将执行以下代码:
^{pr2}$显示实际视频时,使用以下函数将图像发送到标签
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())
这很管用。但也有几个问题: 1setWidgetResizable不支持aspectratio 2当用户缩小时,最终图片会比视口小,这不是我想要的。 三。我试着用
sizehint = self.scrollArea.viewportSizeHint()
然后我得到了一个看起来或多或少正确的大小,但是当我调整窗口大小时,结果不会改变。在
事先非常感谢
在调整大小之前,计算缩放因子:
然后调用scaleImage。在
相关问题 更多 >
编程相关推荐