QGraphicScene 背景
QGraphicScene Background
我正在学习 PyQt5 以开发一个小型学院项目。我需要为 QGraphicScene 设置背景,但我无法使图像很好地融入场景。根据我应用的比例,它有时会重复或太大。这是我的代码:
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.title = "title";
self.top = 100
self.left = 100
self.width = 1500
self.height = 900
self.initUI()
def initUI(self):
scene = QGraphicsScene(0, 0, width, heigth)
view = QGraphicsView(scene, self)
image = QImage('pathToImage')
scene.setBackgroundBrush(QBrush(image))
self.setWindowTitle(self.title)
self.setGeometry(self.top, self.left, self.width, self.height)
self.show()
我已尝试使用
重新缩放图像
image.scaled(scene.width(), scene.height(), Qt.KeepAspectRatio)
但是不太合身,其实是有滚动条的,因为图片太大了。
有人知道问题出在哪里吗?
如果您希望图像缩放,则必须覆盖 drawBackground()
方法:
class GraphicsScene(QGraphicsScene):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._image = QImage()
@property
def image(self):
return self._image
@image.setter
def image(self, img):
if img != self.image:
self._image = img
self.update()
def drawBackground(self, painter, rect):
if self.image.isNull():
super().drawBackground(painter, rect)
else:
painter.drawImage(rect, self.image)
scene = GraphicsScene(self)
scene.image = QImage("pathToImage")
view = QGraphicsView(scene)
我正在学习 PyQt5 以开发一个小型学院项目。我需要为 QGraphicScene 设置背景,但我无法使图像很好地融入场景。根据我应用的比例,它有时会重复或太大。这是我的代码:
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.title = "title";
self.top = 100
self.left = 100
self.width = 1500
self.height = 900
self.initUI()
def initUI(self):
scene = QGraphicsScene(0, 0, width, heigth)
view = QGraphicsView(scene, self)
image = QImage('pathToImage')
scene.setBackgroundBrush(QBrush(image))
self.setWindowTitle(self.title)
self.setGeometry(self.top, self.left, self.width, self.height)
self.show()
我已尝试使用
重新缩放图像image.scaled(scene.width(), scene.height(), Qt.KeepAspectRatio)
但是不太合身,其实是有滚动条的,因为图片太大了。 有人知道问题出在哪里吗?
如果您希望图像缩放,则必须覆盖 drawBackground()
方法:
class GraphicsScene(QGraphicsScene):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._image = QImage()
@property
def image(self):
return self._image
@image.setter
def image(self, img):
if img != self.image:
self._image = img
self.update()
def drawBackground(self, painter, rect):
if self.image.isNull():
super().drawBackground(painter, rect)
else:
painter.drawImage(rect, self.image)
scene = GraphicsScene(self)
scene.image = QImage("pathToImage")
view = QGraphicsView(scene)