【问题标题】:QPixmap: How to increase the size of the picture in addPixmap?QPixmap:如何增加addPixmap中图片的大小?
【发布时间】:2018-04-12 06:51:02
【问题描述】:
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 已经存在。在滚动条的屏幕上显示时增加其大小的方法是什么?

目标是有一个按钮,点击它的图片的大小应该会增加。

【问题讨论】:

  • 如果调整scene.addPixmap(self.m) 返回的QGraphicsPixmapItem 的大小会怎样?
  • @vahancho 有什么办法吗? doc.qt.io/qt-5/qgraphicspixmapitem.html这里看不到任何改变大小的功能。

标签: python pyqt pyqt5 qgraphicsscene qgraphicspixmapitem


【解决方案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_())

【讨论】:

  • 非常感谢您。这段时间你一直很有帮助。谢谢。
猜你喜欢
  • 2021-03-31
  • 2015-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多