MCPcopy Index your code
hub / github.com/PyQt5/PyQtClient / ToolTip

Class ToolTip

Widgets/ToolTip.py:17–77  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15
16
17class ToolTip(QWidget):
18
19 _instance = None
20 TimeOut = 2000
21
22 def __init__(self, *args, **kwargs):
23 super(ToolTip, self).__init__(*args, **kwargs)
24 self.setWindowFlags(self.windowFlags() | Qt.ToolTip |
25 Qt.FramelessWindowHint)
26 self.setAttribute(Qt.WA_TranslucentBackground, True)
27 self.setVisible(False)
28 layout = QVBoxLayout(self, spacing=0)
29 layout.setContentsMargins(0, 0, 0, 0)
30 self.label = QLabel(self)
31 self.label.setAlignment(Qt.AlignCenter)
32 self.label.setContentsMargins(0, 0, 0, 0)
33 layout.addWidget(self.label)
34 # 定时隐藏
35 self._hideTimer = QTimer(self, timeout=self.hide)
36
37 @classmethod
38 def bind(cls, widget):
39 if not cls._instance:
40 cls._instance = cls()
41 widget.installEventFilter(cls._instance)
42
43 def setText(self, text):
44 self.label.setText(text)
45
46 def eventFilter(self, widget, event):
47 if isinstance(event, QHelpEvent):
48 return True
49 # self.hide()
50 # self._hideTimer.stop()
51 # self.setText(widget.toolTip())
52 # if not widget.toolTip():
53 # return True
54 # self.show()
55 # # 自动隐藏
56 # self._hideTimer.start(self.TimeOut)
57 # pos = widget.mapToGlobal(QPoint(0, 0))
58 # self.move(pos.x() + widget.width() + 30,
59 # pos.y() + int((widget.height() - self.height()) / 2))
60 # return True
61 t = event.type()
62 if t == QEvent.Enter: # 鼠标进入
63 self.hide()
64 self._hideTimer.stop()
65 self.setText(widget.toolTip())
66 if widget.toolTip():
67 self.show()
68 # 自动隐藏
69 self._hideTimer.start(self.TimeOut)
70 pos = widget.mapToGlobal(QPoint(0, 0))
71 self.move(pos.x() + widget.width() + 30,
72 pos.y() + int((widget.height() - self.height()) / 2))
73 elif t == QEvent.Leave: # 鼠标离开
74 self._hideTimer.stop()

Callers 2

_showNoticeMethod · 0.90
testMethod · 0.90

Calls

no outgoing calls

Tested by 1

testMethod · 0.72