113 lines
3.6 KiB
Python
113 lines
3.6 KiB
Python
# coding:utf-8
|
|
import sys
|
|
|
|
from PyQt5.QtCore import Qt
|
|
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QVBoxLayout
|
|
|
|
from qfluentwidgets import (PushButton, TeachingTip, TeachingTipTailPosition, InfoBarIcon, setTheme, Theme,
|
|
TeachingTipView, FlyoutViewBase, BodyLabel, PrimaryPushButton, PopupTeachingTip)
|
|
|
|
|
|
class CustomFlyoutView(FlyoutViewBase):
|
|
|
|
def __init__(self, parent=None):
|
|
super().__init__(parent)
|
|
self.vBoxLayout = QVBoxLayout(self)
|
|
self.label = BodyLabel(
|
|
'这是一场「试炼」,我认为这就是一场为了战胜过去的「试炼」,\n只有战胜了那些幼稚的过去,人才能有所成长。')
|
|
self.button = PrimaryPushButton('Action')
|
|
|
|
self.button.setFixedWidth(140)
|
|
self.vBoxLayout.setSpacing(12)
|
|
self.vBoxLayout.setContentsMargins(20, 16, 20, 16)
|
|
self.vBoxLayout.addWidget(self.label)
|
|
self.vBoxLayout.addWidget(self.button)
|
|
|
|
def paintEvent(self, e):
|
|
pass
|
|
|
|
|
|
class Demo(QWidget):
|
|
|
|
def __init__(self):
|
|
super().__init__()
|
|
# setTheme(Theme.DARK)
|
|
# self.setStyleSheet("Demo{background: rgb(32, 32, 32)}")
|
|
|
|
self.hBoxLayout = QHBoxLayout(self)
|
|
self.button1 = PushButton('Top', self)
|
|
self.button2 = PushButton('Bottom', self)
|
|
self.button3 = PushButton('Custom', self)
|
|
|
|
self.resize(700, 500)
|
|
self.button1.setFixedWidth(150)
|
|
self.button2.setFixedWidth(150)
|
|
self.button3.setFixedWidth(150)
|
|
self.hBoxLayout.addWidget(self.button2, 0, Qt.AlignHCenter)
|
|
self.hBoxLayout.addWidget(self.button1, 0, Qt.AlignHCenter)
|
|
self.hBoxLayout.addWidget(self.button3, 0, Qt.AlignHCenter)
|
|
self.button1.clicked.connect(self.showTopTip)
|
|
self.button2.clicked.connect(self.showBottomTip)
|
|
self.button3.clicked.connect(self.showCustomTip)
|
|
|
|
def showTopTip(self):
|
|
position = TeachingTipTailPosition.BOTTOM
|
|
view = TeachingTipView(
|
|
icon=None,
|
|
title='Lesson 5',
|
|
content="最短的捷径就是绕远路,绕远路才是我的最短捷径。",
|
|
image='resource/Gyro.jpg',
|
|
# image='resource/boqi.gif',
|
|
isClosable=True,
|
|
tailPosition=position,
|
|
)
|
|
|
|
# add widget to view
|
|
button = PushButton('Action')
|
|
button.setFixedWidth(120)
|
|
view.addWidget(button, align=Qt.AlignRight)
|
|
|
|
w = TeachingTip.make(
|
|
target=self.button1,
|
|
view=view,
|
|
duration=-1,
|
|
tailPosition=position,
|
|
parent=self
|
|
)
|
|
view.closed.connect(w.close)
|
|
|
|
def showBottomTip(self):
|
|
TeachingTip.create(
|
|
target=self.button2,
|
|
icon=InfoBarIcon.SUCCESS,
|
|
title='Lesson 4',
|
|
content="表达敬意吧,表达出敬意,然后迈向回旋的另一个全新阶段!",
|
|
isClosable=True,
|
|
tailPosition=TeachingTipTailPosition.TOP,
|
|
duration=2000,
|
|
parent=self
|
|
)
|
|
|
|
def showCustomTip(self):
|
|
# TeachingTip.make(
|
|
PopupTeachingTip.make(
|
|
target=self.button3,
|
|
view=CustomFlyoutView(),
|
|
tailPosition=TeachingTipTailPosition.RIGHT,
|
|
duration=2000,
|
|
parent=self
|
|
)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
# enable dpi scale
|
|
QApplication.setHighDpiScaleFactorRoundingPolicy(
|
|
Qt.HighDpiScaleFactorRoundingPolicy.PassThrough)
|
|
QApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
|
|
QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps)
|
|
|
|
app = QApplication(sys.argv)
|
|
w = Demo()
|
|
w.show()
|
|
app.exec_()
|