Une bibliothèque d'info-bulle moderne et entièrement personnalisable pour PYQT et PYSIDE

PyQt5 , PyQt6 , PySide2 et 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' ) L'info-bulle sera automatiquement affichée tout en survolant le widget. Si vous souhaitez afficher et masquer manuellement l'info-bulle, vous pouvez utiliser les méthodes show() et hide() :
tooltip . show ()
tooltip . hide () Pour supprimer une info-bulle, vous pouvez utiliser la méthode deleteLater() :
tooltip . deleteLater () Pour être notifié lorsqu'une info-bulle est affichée ou masquée, vous pouvez vous abonner aux signaux shown et hidden :
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.AUTOPlacements disponibles:
AUTO,LEFT,RIGHT,TOP,BOTTOM
tooltip . setFallbackPlacements ([ TooltipPlacement . TOP , TooltipPlacement . BOTTOM ]) # Default: []Si l'info-bulle ne s'adapte pas à l'écran avec le placement principal, l'un des emplacements de secours sera choisi à la place de l'ordre de la liste fournie.
Pour obtenir le placement actuel de l'info-bulle, vous pouvez utiliser la méthodegetActualPlacement().
tooltip . setTriangleEnabled ( False ) # Default: True tooltip . setTriangleSize ( 7 ) # Default: 5 tooltip . setDuration ( 1000 ) # Default: 0La durée est le temps en millisecondes, après quoi l'info-bulle recommencera. Si la durée est définie sur
0, l'info-bulle restera visible aussi longtemps que le widget est en plané.
# 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 ))Chaque placement / côté a son propre décalage pour permettre une personnalisation complète. Chaque décalage est un Qpoint, qui est composé d'une valeur x et y.
Par défaut, tous les décalages sont définis surQPoint(0, 0).
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
Autres options de personnalisation:
| Option | Description | Défaut |
|---|---|---|
setShowingOnDisabled() | Si les info-bulles doivent également être affichées sur les widgets désactivés | False |
setFadeInEasingCurve() | La courbe d'assouplissement du fondu dans l'animation | QEasingCurve.Type.Linear |
setFadeOutEasingCurve() | La courbe d'assouplissement de l'animation de la décoloration | QEasingCurve.Type.Linear |
setMarginLeft() | Réglez la marge gauche individuellement | 12 |
setMarginRight() | Réglez la marge droite individuellement | 12 |
setMarginTop() | Régler la marge supérieure individuellement | 8 |
setMarginBottom() | Régler la marge inférieure individuellement | 7 |
Les démos de Pyqt5, Pyqt6 et Pyside6 peuvent être trouvées dans le dossier de démonstration.
Pour garder la démo simple, seules les fonctionnalités les plus importantes sont incluses. Pour obtenir un aperçu de toutes les options de personnalisation, consultez la documentation ci-dessus.
Installation des dépendances de test requises PYQT6, PYTEST et COVERAGEPY:
pip install PyQt6 pytest coverage
Pour exécuter les tests avec une couverture, clonez ce référentiel, allez dans le répertoire principal et exécutez:
coverage run -m pytest
coverage report --ignore-errors -m
Ce logiciel est concédé sous licence MIT.