QPixmap: Как увеличить размер картинки в addPixmap?
class MyGraphicsView(QGraphicsView):
def __init__(self):
super(MyGraphicsView, self).__init__()
scene = QGraphicsScene(self)
self.tic_tac_toe = TicTacToe()
scene.addItem(self.tic_tac_toe)
self.m = QPixmap("exit.png")
scene.addPixmap(self.m)
self.setScene(scene)
self.setCacheMode(QGraphicsView.CacheBackground)
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
PNG уже там. Как увеличить его размер при отображении на экране в полосах прокрутки?
Цель состоит в том, чтобы иметь кнопку, на щелчке которой размер этой картинки должен увеличиться.
1 ответ
Решение
Вы должны использовать setScale()
, Также, когда вы используете addPixmap()
это возвращает созданное QGraphicsPixmapItem
,
Кроме того, масштабирование является преобразованием, поэтому оно имеет источник преобразования, по умолчанию оно (0, 0)
, но в этом случае лучшим вариантом было бы разместить его в центре изображения.
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class MyGraphicsView(QGraphicsView):
def __init__(self):
super(MyGraphicsView, self).__init__()
scene = QGraphicsScene(self)
self.m = QPixmap("exit.png")
self.item = scene.addPixmap(self.m)
self.item.setTransformOriginPoint(self.item.boundingRect().center())
self.setScene(scene)
self.setCacheMode(QGraphicsView.CacheBackground)
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
@pyqtSlot()
def scale_pixmap(self):
self.item.setScale(2*self.item.scale())
class Example(QMainWindow):
def __init__(self):
super(Example, self).__init__()
centralWidget = QWidget()
self.setCentralWidget(centralWidget)
lay = QVBoxLayout(centralWidget)
gv = MyGraphicsView()
button = QPushButton("scale")
lay.addWidget(gv)
lay.addWidget(button)
button.clicked.connect(gv.scale_pixmap)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
w = Example()
w.show()
sys.exit(app.exec_())