프로젝트

일반

사용자정보

개정판 a247f3fd

IDa247f3fd0d74cef864eb5394535c4b5bffac9f1d
상위 13502b99
하위 25071e8d, 06e5d695, 7dbe6b6f

함의성이(가) 6년 이상 전에 추가함

issue #655: add arrow key event

차이점 보기:

DTI_PID/DTI_PID/Shapes/TrainingBoxItem.py
44 44
    def mousePressEvent(self, event):
45 45
        self.spinBoxFlag = True
46 46
        self.scene.clearSelection()
47
        QGraphicsRectItem.mousePressEvent(self, event)
47
        #QGraphicsRectItem.mousePressEvent(self, event)
48
        self.setSelected(True)
48 49
        
49 50
        rect = self.rect()
50 51
        self.ui.spinBoxLeft.setValue(round(rect.x()))
DTI_PID/DTI_PID/TrainingEditorDialog.py
302 302
    '''
303 303
    def keyPressEvent(self, event):
304 304
        try:
305
            items = self.graphicsViewTrainingDrawing.scene.selectedItems()
306
            if len(items) is not 1 or type(items[0]) is not QTrainingBoxItem:
307
                return
308
            seletedItem = items[0]
309
            closestItem = None
310
            x = seletedItem.rect().x()
305 311
            if event.key() == Qt.Key_Left:
306
                for item in self.graphicsViewTrainingDrawing.scene.selectedItems():
307
                    if type(item) is QTrainingBoxItem:
308
                        item.setSelected(False)
312
                dx =  sys.maxsize
309 313
                for item in self.graphicsViewTrainingDrawing.scene.items():
310 314
                    if type(item) is QTrainingBoxItem:
311
                        item.setSelected(True)
312
                        break
315
                        if x - item.rect().x() > 0 and x - item.rect().x() < dx:
316
                            closestItem = item
317
                            dx = x - item.rect().x()
318
                if closestItem is not None:
319
                    closestItem.setSelected(True)
320
                    seletedItem.setSelected(False)
321
                    closestItem.mousePressEvent('arrow key')
322
                        
313 323
            elif event.key() == Qt.Key_Right:
314
                pass
324
                dx = -sys.maxsize
325
                for item in self.graphicsViewTrainingDrawing.scene.items():
326
                    if type(item) is QTrainingBoxItem:
327
                        if x - item.rect().x() < 0 and x - item.rect().x() > dx:
328
                            closestItem = item
329
                            dx = x - item.rect().x()
330
                if closestItem is not None:
331
                    closestItem.setSelected(True)
332
                    seletedItem.setSelected(False)
333
                    closestItem.mousePressEvent('arrow key')
315 334
                
316 335
        except Exception as ex:
317 336
            print('error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno))

내보내기 Unified diff

클립보드 이미지 추가 (최대 크기: 500 MB)