我在理解 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] 删除。
我来说两句