initial fluent-widgets ui
This commit is contained in:
84
examples/view/flip_view/demo.py
Normal file
84
examples/view/flip_view/demo.py
Normal file
@ -0,0 +1,84 @@
|
||||
# coding:utf-8
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
from PySide6.QtCore import QModelIndex, Qt, QRect, QSize
|
||||
from PySide6.QtGui import QIcon, QPainter, QFont, QColor
|
||||
from PySide6.QtWidgets import QApplication, QStyleOptionViewItem, QWidget, QHBoxLayout, QVBoxLayout
|
||||
|
||||
from qfluentwidgets import (FlipImageDelegate, setTheme, Theme, HorizontalPipsPager, HorizontalFlipView,
|
||||
VerticalFlipView, getFont)
|
||||
|
||||
|
||||
class CustomFlipItemDelegate(FlipImageDelegate):
|
||||
""" Custom flip item delegate """
|
||||
|
||||
def paint(self, painter: QPainter, option: QStyleOptionViewItem, index: QModelIndex):
|
||||
super().paint(painter, option, index)
|
||||
painter.save()
|
||||
|
||||
# draw mask
|
||||
painter.setBrush(QColor(255, 255, 255, 200))
|
||||
painter.setPen(Qt.NoPen)
|
||||
rect = option.rect
|
||||
rect = QRect(rect.x(), rect.y(), 200, rect.height())
|
||||
painter.drawRect(rect)
|
||||
|
||||
# draw text
|
||||
painter.setPen(Qt.black)
|
||||
painter.setFont(getFont(16, QFont.Bold))
|
||||
painter.drawText(rect, Qt.AlignCenter, '🥰\n硝子酱一级棒卡哇伊')
|
||||
|
||||
painter.restore()
|
||||
|
||||
|
||||
|
||||
class Demo(QWidget):
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
# setTheme(Theme.DARK)
|
||||
# self.setStyleSheet('Demo{background:rgb(32,32,32)}')
|
||||
|
||||
self.flipView = HorizontalFlipView(self)
|
||||
self.pager = HorizontalPipsPager(self)
|
||||
|
||||
# change aspect ratio mode
|
||||
self.flipView.setAspectRatioMode(Qt.AspectRatioMode.KeepAspectRatio)
|
||||
|
||||
# adjust view size
|
||||
# self.flipView.setItemSize(QSize(320, 180))
|
||||
# self.flipView.setFixedSize(QSize(320, 180))
|
||||
|
||||
# NOTE: use custom delegate
|
||||
# self.flipView.setItemDelegate(CustomFlipItemDelegate(self.flipView))
|
||||
|
||||
# add images
|
||||
self.flipView.addImages([str(i) for i in Path('./resource').glob('*')])
|
||||
self.pager.setPageNumber(self.flipView.count())
|
||||
|
||||
# adjust border radius
|
||||
# self.flipView.setBorderRadius(15)
|
||||
# self.flipView.setFixedSize(QSize(710, 270))
|
||||
# self.flipView.setSpacing(15)
|
||||
|
||||
self.pager.currentIndexChanged.connect(self.flipView.setCurrentIndex)
|
||||
self.flipView.currentIndexChanged.connect(self.pager.setCurrentIndex)
|
||||
|
||||
# self.flipView.setCurrentIndex(2)
|
||||
|
||||
self.setLayout(QVBoxLayout(self))
|
||||
self.layout().addWidget(self.flipView, 0, Qt.AlignCenter)
|
||||
self.layout().addWidget(self.pager, 0, Qt.AlignCenter)
|
||||
self.layout().setAlignment(Qt.AlignCenter)
|
||||
self.layout().setSpacing(20)
|
||||
self.resize(600, 600)
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = QApplication(sys.argv)
|
||||
w = Demo()
|
||||
w.show()
|
||||
app.exec()
|
||||
BIN
examples/view/flip_view/resource/1.jpg
Normal file
BIN
examples/view/flip_view/resource/1.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
BIN
examples/view/flip_view/resource/2.jpg
Normal file
BIN
examples/view/flip_view/resource/2.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
BIN
examples/view/flip_view/resource/3.jpg
Normal file
BIN
examples/view/flip_view/resource/3.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 29 KiB |
BIN
examples/view/flip_view/resource/4.jpg
Normal file
BIN
examples/view/flip_view/resource/4.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
BIN
examples/view/flip_view/resource/5.png
Normal file
BIN
examples/view/flip_view/resource/5.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 310 KiB |
BIN
examples/view/flip_view/resource/6.png
Normal file
BIN
examples/view/flip_view/resource/6.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 242 KiB |
Reference in New Issue
Block a user