def plot(self): #時間がキーで、その時間にアナウンスされたエッジ全て(重み集計なし) f = open("../data/pickles/%s" % announceFile, "rb") self.announce = pickle.load(f) f = open("../data/pickles/%s" % withdrawFile, "rb") self.withdraw = pickle.load(f) timeRangeFrom = "0802241824" timeRangeTo = "0802241923" startDate = timeRangeFrom[:len(timeRangeFrom) - 4] startMin = int(timeRangeFrom[len(timeRangeFrom) - 2:]) #下2桁 startHour = int(timeRangeFrom[len(timeRangeFrom) - 4:len(timeRangeFrom) - 2]) #下4桁〜下2桁 # withdrawならそのまま for i in range(timeRange): min = i + startMin #時間繰り上げなしの分カウント if min > 59: currentMin = min % 60 if currentMin < 10: strMin = "0" + str(currentMin) #"00 ~ 09" else: strMin = str(currentMin) #"10 ~ 59" else: strMin = str(min) hour = min // 60 currentHour = startHour + hour strHour = str(currentHour) time = startDate + strHour + strMin print(time) value = math.log(len(self.announce[time]), 1.1) announcebar = QGraphicsRectItem(i * barWidth, 200, barWidth, -value) announcebar.setPen(announcebarPen) announcebar.setBrush(announcebarBrush) announcebar.setFlags(QGraphicsItem.ItemIsSelectable) self.plotScene.addItem(announcebar) withdrawbar = QGraphicsRectItem(i * barWidth, 200, barWidth, value) withdrawbar.setPen(withdrawbarPen) withdrawbar.setBrush(withdrawbarBrush) withdrawbar.setFlags(QGraphicsItem.ItemIsSelectable) self.plotScene.addItem(withdrawbar) vertivalCenter = self.height / 2 horizontalCenter = self.width / 2
def on_actItem_Rect(self): # 添加一个矩形 _triggered rect = QRectF(-50, -25, 100, 50) item = QGraphicsRectItem(rect) # x,y 为左上角的图元局部坐标,图元中心点为0,0 item.rect = rect item.setFlags(QGraphicsItem.ItemIsMovable | QGraphicsItem.ItemIsSelectable | QGraphicsItem.ItemIsFocusable) item.brush = Qt.yellow item.setBrush(QBrush(item.brush)) item.style = Qt.SolidLine #item.setTransform(QTransform()) self.view.frontZ = self.view.frontZ + 1 item.setZValue(self.view.frontZ) item.setPos(-50 + (QtCore.qrand() % 100), -50 + (QtCore.qrand() % 100)) self.view.seqNum = self.view.seqNum + 1 item.setData(self.view.ItemId, self.view.seqNum) item.setData(self.view.ItemDesciption, "矩形") self.scene.addItem(item) self.scene.clearSelection() item.setSelected(True)
def __init__(self): super(MainWindow, self).__init__() self.resize(600, 400) self.view = QMyGraphicsView() # 创建视图窗口 self.setCentralWidget(self.view) # 设置中央控件 self.statusbar = self.statusBar() # 添加状态栏 self.labviewcorrd = QLabel('view坐标:') self.labviewcorrd.setMinimumWidth(150) self.statusbar.addWidget(self.labviewcorrd) self.labscenecorrd = QLabel('scene坐标:') self.labscenecorrd.setMinimumWidth(150) self.statusbar.addWidget(self.labscenecorrd) self.labitemcorrd = QLabel('item坐标:') self.labitemcorrd.setMinimumWidth(150) self.statusbar.addWidget(self.labitemcorrd) rect = QRectF(-200, -100, 400, 200) self.scene = QGraphicsScene(rect) # 创建场景 # 参数:场景区域 # 场景坐标原点默认在场景中心---场景中心位于界面中心 self.view.setScene(self.scene) # 给视图窗口设置场景 item1 = QGraphicsRectItem(rect) # 创建矩形---以场景为坐标 item1.setFlags(QGraphicsItem.ItemIsSelectable | QGraphicsItem.ItemIsFocusable | QGraphicsItem.ItemIsMovable) # 给图元设置标志 # QGraphicsItem.ItemIsSelectable---可选择 # QGraphicsItem.ItemIsFocusable---可设置焦点 # QGraphicsItem.ItemIsMovable---可移动 # QGraphicsItem.ItemIsPanel--- self.scene.addItem(item1) # 给场景添加图元 for pos, color in zip([rect.left(), 0, rect.right()], [Qt.red, Qt.yellow, Qt.blue]): item = QGraphicsEllipseItem(-50, -50, 100, 100) # 创建椭圆--场景坐标 # 参数1 参数2 矩形左上角坐标 # 参数3 参数4 矩形的宽和高 item.setPos(pos, 0) # 给图元设置在场景中的坐标(移动图元)--图元中心坐标 item.setBrush(color) # 设置画刷 item.setFlags(QGraphicsItem.ItemIsSelectable | QGraphicsItem.ItemIsFocusable | QGraphicsItem.ItemIsMovable) self.scene.addItem(item) self.scene.clearSelection() # 【清除选择】 self.view.sigMouseMovePoint.connect(self.slotMouseMovePoint)