96 lines
3.5 KiB
Python
96 lines
3.5 KiB
Python
|
|
# coding:utf-8
|
||
|
|
import sys
|
||
|
|
|
||
|
|
from PySide6.QtCore import Qt, QSize, QPoint
|
||
|
|
from PySide6.QtWidgets import QApplication, QWidget, QHBoxLayout, QVBoxLayout
|
||
|
|
|
||
|
|
from qfluentwidgets import (InfoBadge, IconInfoBadge, setTheme, Theme, DotInfoBadge, ToolButton,
|
||
|
|
InfoBadgePosition, InfoBadgeManager)
|
||
|
|
from qfluentwidgets import FluentIcon as FIF
|
||
|
|
|
||
|
|
|
||
|
|
@InfoBadgeManager.register('Custom')
|
||
|
|
class CustomInfoBadgeManager(InfoBadgeManager):
|
||
|
|
""" Custom info badge manager """
|
||
|
|
|
||
|
|
def position(self):
|
||
|
|
pos = self.target.geometry().center()
|
||
|
|
x = pos.x() - self.badge.width() // 2
|
||
|
|
y = self.target.y() - self.badge.height() // 2
|
||
|
|
return QPoint(x, y)
|
||
|
|
|
||
|
|
|
||
|
|
class Demo(QWidget):
|
||
|
|
|
||
|
|
def __init__(self):
|
||
|
|
super().__init__()
|
||
|
|
# setTheme(Theme.DARK)
|
||
|
|
|
||
|
|
self.vBoxLayout = QVBoxLayout(self)
|
||
|
|
|
||
|
|
# info badge
|
||
|
|
self.hBoxLayout1 = QHBoxLayout()
|
||
|
|
self.hBoxLayout1.setSpacing(20)
|
||
|
|
self.hBoxLayout1.setSizeConstraint(QHBoxLayout.SetMinimumSize)
|
||
|
|
|
||
|
|
self.hBoxLayout1.addStretch(1)
|
||
|
|
self.hBoxLayout1.addWidget(InfoBadge.info(1))
|
||
|
|
self.hBoxLayout1.addWidget(InfoBadge.success(10))
|
||
|
|
self.hBoxLayout1.addWidget(InfoBadge.attension(100))
|
||
|
|
self.hBoxLayout1.addWidget(InfoBadge.warning(1000))
|
||
|
|
self.hBoxLayout1.addWidget(InfoBadge.error(10000))
|
||
|
|
self.hBoxLayout1.addWidget(InfoBadge.custom('1w+', '#005fb8', '#60cdff'))
|
||
|
|
self.hBoxLayout1.addStretch(1)
|
||
|
|
self.vBoxLayout.addLayout(self.hBoxLayout1)
|
||
|
|
|
||
|
|
# dot info badge
|
||
|
|
self.hBoxLayout2 = QHBoxLayout()
|
||
|
|
self.hBoxLayout2.setSpacing(20)
|
||
|
|
self.hBoxLayout2.setSizeConstraint(QHBoxLayout.SetMinimumSize)
|
||
|
|
|
||
|
|
self.hBoxLayout2.addStretch(1)
|
||
|
|
self.hBoxLayout2.addWidget(DotInfoBadge.info())
|
||
|
|
self.hBoxLayout2.addWidget(DotInfoBadge.success())
|
||
|
|
self.hBoxLayout2.addWidget(DotInfoBadge.attension())
|
||
|
|
self.hBoxLayout2.addWidget(DotInfoBadge.warning())
|
||
|
|
self.hBoxLayout2.addWidget(DotInfoBadge.error())
|
||
|
|
self.hBoxLayout2.addWidget(DotInfoBadge.custom('#005fb8', '#60cdff'))
|
||
|
|
self.hBoxLayout2.addStretch(1)
|
||
|
|
self.vBoxLayout.addLayout(self.hBoxLayout2)
|
||
|
|
|
||
|
|
# icon info badge
|
||
|
|
self.hBoxLayout3 = QHBoxLayout()
|
||
|
|
self.hBoxLayout3.setSpacing(20)
|
||
|
|
self.hBoxLayout3.setSizeConstraint(QHBoxLayout.SetMinimumSize)
|
||
|
|
|
||
|
|
self.hBoxLayout3.addStretch(1)
|
||
|
|
self.hBoxLayout3.addWidget(IconInfoBadge.info(FIF.ACCEPT_MEDIUM))
|
||
|
|
self.hBoxLayout3.addWidget(IconInfoBadge.success(FIF.ACCEPT_MEDIUM))
|
||
|
|
self.hBoxLayout3.addWidget(IconInfoBadge.attension(FIF.ACCEPT_MEDIUM))
|
||
|
|
self.hBoxLayout3.addWidget(IconInfoBadge.warning(FIF.CANCEL_MEDIUM))
|
||
|
|
self.hBoxLayout3.addWidget(IconInfoBadge.error(FIF.CANCEL_MEDIUM))
|
||
|
|
|
||
|
|
badge = IconInfoBadge.custom(FIF.RINGER, '#005fb8', '#60cdff')
|
||
|
|
badge.setFixedSize(32, 32)
|
||
|
|
badge.setIconSize(QSize(16, 16))
|
||
|
|
self.hBoxLayout3.addWidget(badge)
|
||
|
|
|
||
|
|
self.hBoxLayout3.addStretch(1)
|
||
|
|
self.vBoxLayout.addLayout(self.hBoxLayout3)
|
||
|
|
|
||
|
|
# Using an InfoBadge in another control
|
||
|
|
self.button = ToolButton(FIF.BASKETBALL, self)
|
||
|
|
self.vBoxLayout.addWidget(self.button, 0, Qt.AlignHCenter)
|
||
|
|
InfoBadge.success(1, self, target=self.button, position=InfoBadgePosition.TOP_RIGHT)
|
||
|
|
|
||
|
|
# NOTE: Use custom info badge manager
|
||
|
|
# InfoBadge.success(1, self, target=self.button, position='Custom')
|
||
|
|
|
||
|
|
self.resize(450, 400)
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == '__main__':
|
||
|
|
app = QApplication(sys.argv)
|
||
|
|
w = Demo()
|
||
|
|
w.show()
|
||
|
|
app.exec()
|