Eine moderne und vollständig anpassbare Tooltip -Bibliothek für PYQT und Pyside

PyQt5 , PyQt6 , PySide2 und PySide6 pip install pyqttooltip
from PyQt6 . QtWidgets import QMainWindow , QPushButton
from pyqttooltip import Tooltip , TooltipPlacement
class Window ( QMainWindow ):
def __init__ ( self ):
super (). __init__ ( parent = None )
# Add button
self . button = QPushButton ( 'Button' , self )
# Add tooltip to button
self . tooltip = Tooltip ( self . button , 'This is a tooltip' ) Der Tooltip wird automatisch angezeigt, während das Widget schwebt. Wenn Sie den Tooltip manuell anzeigen und verstecken möchten, können Sie die Methoden show() und hide() verwenden:
tooltip . show ()
tooltip . hide () Um einen Tooltip zu löschen, können Sie die Methode deleteLater() verwenden:
tooltip . deleteLater () Um benachrichtigt zu werden, wenn ein Tooltip angezeigt oder versteckt wird, können Sie die shown und hidden Signale abonnieren:
tooltip . shown . connect ( lambda : print ( 'shown' ))
tooltip . hidden . connect ( lambda : print ( 'hidden' )) tooltip . setWidget ( widget ) # Default: None tooltip . setText ( 'Text of the tooltip' ) # Default: '' tooltip . setPlacement ( TooltipPlacement . RIGHT ) # Default: TooltipPlacement.AUTOVerfügbare Platzierungen:
AUTO,LEFT,RIGHT,TOP,BOTTOM
tooltip . setFallbackPlacements ([ TooltipPlacement . TOP , TooltipPlacement . BOTTOM ]) # Default: []Wenn der Tooltip nicht mit der primären Platzierung auf den Bildschirm passt, wird stattdessen eine der Fallback -Platzierungen in der Reihenfolge der angegebenen Liste ausgewählt.
Um die aktuelle Platzierung des Tooltip zu erhalten, können Sie die MethodegetActualPlacement()verwenden.
tooltip . setTriangleEnabled ( False ) # Default: True tooltip . setTriangleSize ( 7 ) # Default: 5 tooltip . setDuration ( 1000 ) # Default: 0Die Dauer ist die Zeit in Millisekunden, nach der der Tooltip wieder verblasst. Wenn die Dauer auf
0eingestellt ist, bleibt der Tooltip so lange sichtbar, wie das Widget schwebt.
# Setting the offset for a specific placement
tooltip . setOffsetByPlacement ( TooltipPlacement . LEFT , QPoint ( - 10 , 5 ))
# Using a dict that specifies the offset for each placement you want to set
offsets = {
TooltipPlacement . LEFT : QPoint ( - 10 , 5 ),
TooltipPlacement . RIGHT : QPoint ( 10 , 5 ),
TooltipPlacement . TOP : QPoint ( 5 , - 10 ),
TooltipPlacement . BOTTOM : QPoint ( 5 , 10 )
}
tooltip . setOffsets ( offsets )
# Setting the offsets for all the placements to a single value
tooltip . setOffsetsAll ( QPoint ( 10 , 5 ))Jede Platzierung / Seite hat einen eigenen Versatz, um eine vollständige Anpassungsfähigkeit zu ermöglichen. Jeder Offset ist ein Qpoint, der aus einem X- und Y -Wert besteht.
Standardmäßig sind alle Offsets aufQPoint(0, 0)eingestellt.
tooltip . setShowDelay ( 500 ) # Default: 50
tooltip . setHideDelay ( 500 ) # Default: 50 tooltip . setFadeInDuration ( 250 ) # Default: 150
tooltip . setFadeOutDuration ( 250 ) # Default: 150 tooltip . setBorderRadius ( 0 ) # Default: 2 tooltip . setBorderEnabled ( True ) # Default: False tooltip . setBackgroundColor ( QColor ( '#FCBA03' )) # Default: QColor('#111214')
tooltip . setTextColor ( QColor ( '#000000' )) # Default: QColor('#CFD2D5')
tooltip . setBorderColor ( QColor ( '#A38329' )) # Default: QColor('#403E41') tooltip . setFont ( QFont ( 'Consolas' , 10 )) # Default: QFont('Arial', 9, QFont.Weight.Bold) tooltip . setMargins ( QMargins ( 10 , 8 , 10 , 8 )) # Default: QMargins(12, 8, 12, 7) tooltip . setMaximumWidth ( 150 ) # Default: 16777215 (QWIDGETSIZE_MAX) tooltip . setTextCenteringEnabled ( False ) # Default: True tooltip . setDropShadowEnabled ( False ) # Default: True tooltip . setDropShadowStrength ( 3.5 ) # Default: 2.0 tooltip . setOpacity ( 0.8 ) # Default: 1.0
Andere Anpassungsoptionen:
| Option | Beschreibung | Standard |
|---|---|---|
setShowingOnDisabled() | Ob die Tooltips auch auf deaktivierten Widgets angezeigt werden sollten | False |
setFadeInEasingCurve() | Die lockere Kurve des Verblassen in der Animation | QEasingCurve.Type.Linear |
setFadeOutEasingCurve() | Die lockere Kurve der Fade -Out -Animation | QEasingCurve.Type.Linear |
setMarginLeft() | Setzen Sie den linken Rand einzeln ein | 12 |
setMarginRight() | Stellen Sie den rechten Rand einzeln ein | 12 |
setMarginTop() | Stellen Sie den oberen Rand einzeln ein | 8 |
setMarginBottom() | Einen Untermargen einzeln einstellen | 7 |
Die Demos für PYQT5, PYQT6 und Pyside6 finden Sie im Demo -Ordner.
Um die Demo einfach zu halten, sind nur die wichtigsten Funktionen enthalten. Um einen Überblick über alle Anpassungsoptionen zu erhalten, lesen Sie die obige Dokumentation.
Installation der erforderlichen Testabhängigkeiten PYQT6, PyTest und CoveragePy:
pip install PyQt6 pytest coverage
Um die Tests mit Abdeckung durchzuführen, klonen Sie dieses Repository, gehen Sie in das Hauptverzeichnis und rennen Sie:
coverage run -m pytest
coverage report --ignore-errors -m
Diese Software ist unter der MIT -Lizenz lizenziert.