Perpustakaan tooltip yang modern dan sepenuhnya dapat disesuaikan untuk PYQT dan Pyside

PyQt5 , PyQt6 , PySide2 , dan 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' ) Tooltip akan secara otomatis ditampilkan saat melayang -layang widget. Jika Anda ingin secara manual menunjukkan dan menyembunyikan tooltip, Anda dapat menggunakan metode show() dan hide() :
tooltip . show ()
tooltip . hide () Untuk menghapus tooltip, Anda dapat menggunakan metode deleteLater() :
tooltip . deleteLater () Untuk mendapatkan pemberitahuan ketika tooltip ditampilkan atau disembunyikan, Anda dapat berlangganan sinyal shown dan 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.AUTOPenempatan yang tersedia:
AUTO,LEFT,RIGHT,TOP,BOTTOM
tooltip . setFallbackPlacements ([ TooltipPlacement . TOP , TooltipPlacement . BOTTOM ]) # Default: []Jika tooltip tidak sesuai dengan layar dengan penempatan utama, salah satu penempatan fallback akan dipilih sebagai gantinya dalam urutan daftar yang disediakan.
Untuk mendapatkan penempatan tooltip saat ini, Anda dapat menggunakan metodegetActualPlacement().
tooltip . setTriangleEnabled ( False ) # Default: True tooltip . setTriangleSize ( 7 ) # Default: 5 tooltip . setDuration ( 1000 ) # Default: 0Durasinya adalah waktu dalam milidetik setelah itu tooltip akan mulai memudar lagi. Jika durasi diatur ke
0, tooltip akan tetap terlihat selama widget dilayang.
# 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 ))Setiap penempatan / sisi memiliki offset sendiri untuk memungkinkan penyesuaian penuh. Setiap offset adalah qpoint, yang terdiri dari nilai x dan y.
Secara default, semua offset diatur keQPoint(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
Opsi Kustomisasi Lainnya:
| Pilihan | Keterangan | Bawaan |
|---|---|---|
setShowingOnDisabled() | Apakah tooltips juga harus ditampilkan pada widget yang dinonaktifkan | False |
setFadeInEasingCurve() | Kurva pelonggaran fade dalam animasi | QEasingCurve.Type.Linear |
setFadeOutEasingCurve() | Kurva pelonggaran animasi fade out | QEasingCurve.Type.Linear |
setMarginLeft() | Atur margin kiri secara individual | 12 |
setMarginRight() | Atur margin yang tepat secara individual | 12 |
setMarginTop() | Atur margin atas secara individual | 8 |
setMarginBottom() | Atur margin bawah secara individual | 7 |
Demo untuk pyqt5, pyqt6, dan pyside6 dapat ditemukan di folder demo.
Agar demo tetap sederhana, hanya fitur terpenting yang disertakan. Untuk mendapatkan gambaran umum dari semua opsi kustomisasi, lihat dokumentasi di atas.
Memasang dependensi tes yang diperlukan pyqt6, pytest, dan coveragepy:
pip install PyQt6 pytest coverage
Untuk menjalankan tes dengan cakupan, klon repositori ini, masuk ke direktori utama dan jalankan:
coverage run -m pytest
coverage report --ignore-errors -m
Perangkat lunak ini dilisensikan di bawah lisensi MIT.