-
Notifications
You must be signed in to change notification settings - Fork 1
/
T_QLabel.py
39 lines (29 loc) · 1.17 KB
/
T_QLabel.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from PySide.QtCore import *
from PySide.QtGui import *
class T_QLabel(QLabel):
pictureClicked = Signal(object) # can be other types (list, dict, object...)
selected = Signal(object)
def __init__(self, parent=None):
super(T_QLabel, self).__init__(parent)
self.rubberBand = None
def mousePressEvent(self, event):
if event.buttons() == Qt.MiddleButton:
self.pictureClicked.emit(event.pos())
return
elif event.buttons() == Qt.RightButton:
if self.rubberBand is not None:
self.rubberBand = None
return
self.origin = event.pos()
if self.rubberBand is None:
self.rubberBand = QRubberBand(QRubberBand.Rectangle, self)
self.rubberBand.setGeometry(QRect(self.origin, QSize()))
self.rubberBand.show()
def mouseMoveEvent(self, event):
self.rubberBand.setGeometry(QRect(self.origin, event.pos()).normalized())
def mouseReleaseEvent(self, event):
if self.rubberBand is not None:
self.rubberBand.hide()
self.selected.emit(self.rubberBand.geometry())
else:
self.selected.emit(None)