本文整理汇总了Python中PyQt5.QtWidgets.QGraphicsScene.installEventFilter方法的典型用法代码示例。如果您正苦于以下问题:Python QGraphicsScene.installEventFilter方法的具体用法?Python QGraphicsScene.installEventFilter怎么用?Python QGraphicsScene.installEventFilter使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PyQt5.QtWidgets.QGraphicsScene
的用法示例。
在下文中一共展示了QGraphicsScene.installEventFilter方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: GraphicsGraphView
# 需要导入模块: from PyQt5.QtWidgets import QGraphicsScene [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsScene import installEventFilter [as 别名]
class GraphicsGraphView(View, QGraphicsView):
'''The GraphicsGraphView defines a graphical representation of a Graph.
Attribute(s):
nodes (Dictionary[GraphicNode]): All nodes (views)
edges (Dictionary[GraphicEdge]): All edges (views)
scene (QGraphicsScene): Scene to show items (nodes and edges)
nodeHasBeenMoved (bool): Flag to check if a node has been moved
factor (int): Used when enlarging/shrinking scene
'''
factor = 2
def __init__(self):
# Parent constructor(s)
View.__init__(self)
QGraphicsView.__init__(self)
self.nodes = {}
self.edges = {}
self.nodeHasBeenMoved = False
# Enable Antiliasing
self.setRenderHint(QPainter.Antialiasing)
# Rectangular selection
self.setDragMode(QGraphicsView.RubberBandDrag)
self.setRubberBandSelectionMode(Qt.IntersectsItemShape)
# Init scene
self.scene = QGraphicsScene()
self.setScene(self.scene)
self.resetSceneRect()
self.scene.installEventFilter(self)
self.show()
def addNode(self, dictArgsNode):
'''Add a node.
Argument(s):
dictArgsNode (Dictionary[]): Dictionary of arguments of the node
'''
# Create the node
self.nodes[dictArgsNode[NodeArgs.id]] = GraphicsEllipseNode(
dictArgsNode[NodeArgs.id],
self)
# Edit it
self.editNode(dictArgsNode)
# Add it to the scene
self.scene.addItem(self.nodes[dictArgsNode[NodeArgs.id]])
def editNode(self, dictArgsNode):
'''Edit a node.
Argument(s):
dictArgsNode (Dictionary[]): Dictionary of arguments of the node
'''
self.nodes[dictArgsNode[NodeArgs.id]].edit(dictArgsNode)
def removeNode(self, dictArgsNode):
'''Remove a node.
Argument(s):
dictArgsNode (Dictionary[]): Dictionary of arguments of the node
'''
# Remove the node from the scene
self.scene.removeItem(self.nodes[dictArgsNode[NodeArgs.id]])
self.shrinkSceneRect(self.nodes[dictArgsNode[NodeArgs.id]])
self.nodes.pop(dictArgsNode[NodeArgs.id])
# Reset scene rect
if not self.scene.items():
self.resetSceneRect()
def addEdge(self, dictArgsEdge):
'''Add an edge.
Argument(s):
dictArgsEdge (Dictionary[]): Dictionary of arguments of the edge
'''
# Init source and dest nodes
source = self.nodes[dictArgsEdge[EdgeArgs.sourceId]]
dest = self.nodes[dictArgsEdge[EdgeArgs.destId]]
# Create the edge
self.edges[dictArgsEdge[EdgeArgs.id]] = GraphicsLineEdge(
source,
dest,
dictArgsEdge[EdgeArgs.id],
self
)
# Edit it
self.editEdge(dictArgsEdge)
# Add edge to the scene
self.scene.addItem(self.edges[dictArgsEdge[EdgeArgs.id]])
#.........这里部分代码省略.........