【发布时间】:2019-08-20 09:04:53
【问题描述】:
我的 QGraphicsView 应该显示一个大分辨率的图像。大小应适合可调整大小的窗口。目前,图像以我想要的方式查看,但只能通过为初始视图几何图形提供一些手动调整的值。这看起来不整洁。我也尝试参考这里发布的解决方案:Graphics View and Pixmap Size
我当前的窗口是这样的:
class ImageCheck(Ui_ImageCheck.Ui_MainWindow, QMainWindow):
def __init__(self, parent=None):
super(ImageCheck, self).__init__()
self.setupUi(self)
self.setWindowTitle("Image Analyzer")
self.crop_ratio_w = 1
self.crop_ratio_h = 1
self.path = None
self.scene = QGraphicsScene()
self.scene.clear()
self.image_item = QGraphicsPixmapItem()
# This is the approximate shift in coordinates of my initial view from the window
self.view.setGeometry(self.geometry().x()+ 10, self.geometry().y()+ 39,
self.geometry().width()- 55, self.geometry().height()- 110)
self.view.setAlignment(Qt.AlignCenter)
self.view.setFrameShape(QFrame.NoFrame)
def setImage(self, path):
self.path = path
self.crop_ratio_w = self.pixmap.width() / self.view.width()
self.crop_ratio_h = self.pixmap.height() / self.view.height()
pixmap = QPixmap(path)
smaller_pixmap = pixmap.scaled(self.view.width(), self.view.height(),
Qt.IgnoreAspectRatio, t.FastTransformation)
self.image_item.setPixmap(smaller_pixmap)
self.scene.addItem(self.image_item)
self.scene.setSceneRect(0, 0, self.view.width(), self.view.height())
self.view.setGeometry(0, 0, self.view.width(), self.view.height())
self.view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.view.setScene(self.scene)
self.view.setSceneSize()
def resizeEvent(self, event):
self.view.setGeometry(self.geometry().x()+ 10, self.geometry().y()+ 39,
self.geometry().width()- 55, self.geometry().height()- 110)
self.setImage(self.path)
当我试图确定两点之间的距离时,我的手动覆盖可能不是一个好主意。即使是按比例缩放的距离也给了我一个稍微错误的值。
【问题讨论】:
-
您可以分享您的高分辨率图像来测试您的代码,从而为您提供帮助
-
我在这里上传了一张这样的图片:imgur.com/SAMPtCX
标签: python python-3.x pyqt pyqt5 qgraphicsview