2010-02-03 4 views
4

그래서 나는 그런처럼 내 화면에 그린 그래프를 얻을 관리했습니다 : 가장자리가 지속적으로 업데이트 될 예정 이제PyQt에서 그린 그래프에 애니메이션을 적용하는 방법은 무엇입니까?

class Window(QWidget): 
     #stuff 
     graphicsView = QGraphicsView(self) 
     scene = QGraphicsScene(self) 
     #draw our nodes and edges. 
     for i in range(0, len(MAIN_WORLD.currentMax.tour) - 1): 
      node = QGraphicsRectItem(MAIN_WORLD.currentMax.tour[i][0]/3, MAIN_WORLD.currentMax.tour[i][1]/3, 5, 5) 
      edge = QGraphicsLineItem(MAIN_WORLD.currentMax.tour[i][0]/3, MAIN_WORLD.currentMax.tour[i][1]/3, 
      MAIN_WORLD.currentMax.tour[i+1][0]/3, MAIN_WORLD.currentMax.tour[i+1][1]/3) 
      scene.addItem(node) 
      scene.addItem(edge) 

     #now go back and draw our connecting edge. Connects end to home node. 
     connectingEdge = QGraphicsLineItem(MAIN_WORLD.currentMax.tour[0][0]/3, MAIN_WORLD.currentMax.tour[0][1]/3, 
     MAIN_WORLD.currentMax.tour[len(MAIN_WORLD.currentMax.tour) - 1][0]/3, MAIN_WORLD.currentMax.tour[len(MAIN_WORLD.currentMax.tour) - 1][1]/3) 
     scene.addItem(connectingEdge) 
     graphicsView.setScene(scene) 

     hbox = QVBoxLayout(self) 
      #some more stuff.. 
     hbox.addWidget(graphicsView) 

     self.setLayout(hbox) 

을, 그래서 그 가장자리를 제거하고 다시 그릴 수 있도록하려면 . 어떻게해야합니까?

+0

당신이 업데이 트에 전체 그래프를 업데이 트에 하나의 노드를 이동하거나 다시 그려야 할 수 하시겠습니까? –

+0

업데이트에 전체 그래프를 다시 그리는 것처럼 들리는군요. 또한이 질문에 대한 답변에 관심이 있습니다. – Chris

답변

2

QGraphicsScene은 추가 한 항목의 그림을 관리합니다.

for i in range(): 
    nodes[i] = node = QGraphicsRectItem() 
    scene.add(nodes[i]) 

나중에는 노드의 위치를 ​​업데이트 할 수 있습니다 : 사각형 또는 라인의 위치가 변경된 경우 당신은 당신이 오래된 그들 위에있는 경우를 업데이트 할 수 있습니다 라인 마찬가지로

nodes[j].setRect(newx, newy, newwidth, newheight) 

합니다.

하나를 제거해야하는 경우, 당신이 사용할 수있는

scene.removeItem(nodes[22]) 
관련 문제