向 QGraphicsScene 添加项目

jgruszka93

我在理解 QGraphicsScene 时遇到了一些问题。我使用 Designer 创建了简单的 GUI,其中 QGraphicsView 名为drawer_gv.

如您所见,我创建了场景和项目,然后尝试将我的项目添加到场景中。不幸的是什么也没有发生。我的程序的主窗口是可见的,我可以看到我的 QGraphicsView 对象,但我看不到任何椭圆。

所以,我的问题是:如何处理 QGraphicsScene?如何向其添加对象?

这是代码:

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from simple_GUI import Ui_MainWindow

class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)
        self.createpainter()

    def createpainter(self):
        self.drawer_gv.scene=QGraphicsScene
        scene=self.drawer_gv.scene()
        item = QGraphicsEllipseItem(0, 0, 60, 40)
        scene.addItem(item)
        self.drawer_gv.scene=scene


if __name__ == '__main__':

    app = QApplication(sys.argv)
    frame = MainWindow()
    frame.show()
    app.exec_()

这是 simple_GUI.py 的片段,定义了 drawer_gv

self.frame_drawer = QtWidgets.QFrame(self.centralwidget)
self.frame_drawer.setGeometry(QtCore.QRect(250, 150, 930, 700))
self.frame_drawer.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_drawer.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_drawer.setObjectName("frame_drawer")
self.drawer_gv = QtWidgets.QGraphicsView(self.frame_drawer)
self.drawer_gv.setGeometry(QtCore.QRect(10, 22, 910, 650))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.drawer_gv.sizePolicy().hasHeightForWidth())
self.drawer_gv.setSizePolicy(sizePolicy)
self.drawer_gv.setStyleSheet("background-color: rgb(136, 136, 136);")
self.drawer_gv.setFrameShadow(QtWidgets.QFrame.Raised)
self.drawer_gv.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.drawer_gv.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
brush = QtGui.QBrush(QtGui.QColor(10, 100, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
self.drawer_gv.setBackgroundBrush(brush)
brush = QtGui.QBrush(QtGui.QColor(128, 128, 128))
brush.setStyle(QtCore.Qt.SolidPattern)
self.drawer_gv.setForegroundBrush(brush)
self.drawer_gv.setSceneRect(QtCore.QRectF(0.0, 0.0, 900.0, 600.0))
self.drawer_gv.setObjectName("drawer_gv")

我正在使用 Python 3.6 和 PyQt 5。

埃利亚内斯克

QGraphicsView具有setScene()设置创建场景方法:

def createpainter(self):
    scene = QGraphicsScene()
    self.drawer_gv.setScene(scene)
    item = QGraphicsEllipseItem(0, 0, 60, 40)
    item.setPen(QPen(QColor("white")))
    scene.addItem(item)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章