개정판 a247f3fd
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