如何在qgraphicscene中添加一些项目或一些像素图?

时间:2019-06-19 11:44:03

标签: python pyqt5

我正在尝试制作益智游戏。我的想法来自8难题问题,所以现在我尝试使用pyqt5。我的意见是,我从计算机上选择一张图片,然后尝试使用它。但是,当我试图使照片不舒服时,就会遇到麻烦。所以我来这里寻求帮助

因为遇到麻烦,所以我简化了使图片变成碎片的代码。现在,我首先尝试将它们在qgraphicscene上列出,但是我不知道为什么它们都堆叠在左上角,我只想让它们按看起来像原始图片的顺序列出,我该怎么办?

import sys
from vision import Ui_MainWindow
from PyQt5.QtWidgets import QMainWindow, QFileDialog
from PyQt5 import QtWidgets, QtGui, QtCore
from PIL import Image


class MyWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(MyWindow, self).__init__()
        self.setupUi(self)

        self.item = []
        self.if_opened = 0
        self.dim = 3

        self.upset.clicked.connect(self.make_upset)

    def make_upset(self):

        if self.image is None:
            return

        self.scene.clear()
        self.showView.setScene(self.scene)

        pixmap = QtGui.QPixmap(self.image)
        x_side = self.image_file.size[0] / self.dim
        y_side = self.image_file.size[1] / self.dim

        count = 0
        self.item.clear()
        for j in range(self.dim):
            for i in range(self.dim):
                m = pixmap.copy(i * x_side, j * y_side, x_side, y_side)
                self.item.append(QtWidgets.QGraphicsPixmapItem(m))
                self.scene.addItem(self.item[count])
                count = count + 1

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    myShow = MyWindow()
    myShow.show()
    sys.exit(app.exec_())

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1077, 741)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")


        self.upset = QtWidgets.QPushButton(self.centralwidget)
        self.upset.setGeometry(QtCore.QRect(800, 210, 171, 51))
        self.upset.setObjectName("upset")

        self.showView = QtWidgets.QGraphicsView(self.centralwidget)
        self.showView.setGeometry(QtCore.QRect(55, 38, 643, 623))
        self.showView.setObjectName("showView")



        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.upset.setText(_translate("MainWindow", "upset"))

0 个答案:

没有答案