GitHub: https://github.com/zhiyiYo/PyQt-Fluent-Widgets
特点:
安装:
pip install PyQt-Fluent-Widgets
主要组件:
FluentWindow - 现代化主窗口NavigationInterface - 导航界面PrimaryPushButton - 主要按钮LineEdit / PasswordLineEdit - 输入框CardWidget - 卡片组件InfoBar - 信息提示条ProgressBar - 进度条SwitchButton - 开关按钮GitHub: https://github.com/spyder-ide/qtawesome
特点:
安装:
pip install qtawesome
使用示例:
import qtawesome as qta
# Font Awesome图标
icon = qta.icon('fa.user', color='white')
button.setIcon(icon)
# Material Design图标
icon = qta.icon('mdi.account', color='blue')
GitHub: https://github.com/5yutan5/PyQtDarkTheme
特点:
安装:
pip install pyqtdarktheme
使用示例:
import qdarktheme
# 设置深色主题
app.setStyleSheet(qdarktheme.load_stylesheet("dark"))
# 设置浅色主题
app.setStyleSheet(qdarktheme.load_stylesheet("light"))
GitHub: https://github.com/UN-GCPDS/qt-material
特点:
安装:
pip install qt-material
优势:
优势:
优势:
pip install PyQt-Fluent-Widgets qtawesome pyqtdarktheme
from qfluentwidgets import (
FluentWindow, LineEdit, PasswordLineEdit,
PrimaryPushButton, CardWidget
)
import qtawesome as qta
class LoginWindow(FluentWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("游铛铛 - 登录")
# 使用Fluent Design组件
self.username_input = LineEdit()
self.username_input.setPlaceholderText("请输入用户名")
self.username_input.setIcon(qta.icon('fa.user'))
self.password_input = PasswordLineEdit()
self.password_input.setPlaceholderText("请输入密码")
self.password_input.setIcon(qta.icon('fa.lock'))
self.login_btn = PrimaryPushButton("登录")
self.login_btn.setIcon(qta.icon('fa.sign-in'))
from qfluentwidgets import (
FluentWindow, NavigationInterface,
NavigationItemPosition, FluentIcon
)
class MainWindow(FluentWindow):
def __init__(self):
super().__init__()
# 创建导航界面
self.navigationInterface = NavigationInterface(self, showMenuButton=True)
self.addSubInterface(self.rechargeInterface, FluentIcon.MONEY, "充值")
self.addSubInterface(self.steamInterface, FluentIcon.GAME, "Steam账号")
self.addSubInterface(self.selectionInterface, FluentIcon.SHOPPING_CART, "选品")
self.addSubInterface(self.sweepInterface, FluentIcon.SEARCH, "扫货")
self.addSubInterface(self.announcementInterface, FluentIcon.MEGAPHONE, "公告")
self.setStyleSheet("""
QPushButton {
background-color: #0078d4;
color: white;
border-radius: 4px;
padding: 8px 16px;
font-size: 14px;
}
QPushButton:hover {
background-color: #106ebe;
}
QPushButton:pressed {
background-color: #005a9e;
}
""")
from qfluentwidgets import setTheme, Theme
# 设置主题
setTheme(Theme.AUTO) # 自动
setTheme(Theme.LIGHT) # 浅色
setTheme(Theme.DARK) # 深色
import qtawesome as qta
# 常用图标
user_icon = qta.icon('fa.user')
lock_icon = qta.icon('fa.lock')
home_icon = qta.icon('fa.home')
settings_icon = qta.icon('fa.cog')
logout_icon = qta.icon('fa.sign-out')
icon = qta.icon('mdi.account', color='blue')
icon = qta.icon('mdi.lock', color='red')
# 单色图标
icon = qta.icon('fa.user', color='white')
# 渐变色图标
icon = qta.icon('fa.user', color=['#ff0000', '#00ff00'])
from qfluentwidgets import (
FluentWindow, LineEdit, PasswordLineEdit,
PrimaryPushButton, CardWidget, setTheme, Theme
)
import qtawesome as qta
class LoginWindow(FluentWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("游铛铛 - 登录")
# 设置主题
setTheme(Theme.LIGHT)
# 创建卡片容器
card = CardWidget(self)
card.setFixedSize(450, 400)
# 用户名输入框
self.username_input = LineEdit(card)
self.username_input.setPlaceholderText("请输入用户名")
self.username_input.setIcon(qta.icon('fa.user', color='#666'))
# 密码输入框
self.password_input = PasswordLineEdit(card)
self.password_input.setPlaceholderText("请输入密码")
self.password_input.setIcon(qta.icon('fa.lock', color='#666'))
# 登录按钮
self.login_btn = PrimaryPushButton("登录", card)
self.login_btn.setIcon(qta.icon('fa.sign-in', color='white'))
self.login_btn.clicked.connect(self.handle_login)
from qfluentwidgets import (
FluentWindow, NavigationInterface,
NavigationItemPosition, FluentIcon
)
import qtawesome as qta
class MainWindow(FluentWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("游铛铛")
# 创建导航界面
self.navigationInterface = NavigationInterface(self, showMenuButton=True)
# 添加导航项
self.addSubInterface(
self.rechargeInterface,
FluentIcon.MONEY,
"充值",
position=NavigationItemPosition.TOP
)
self.addSubInterface(
self.steamInterface,
FluentIcon.GAME,
"Steam账号",
position=NavigationItemPosition.TOP
)
# 设置窗口布局
self.hBoxLayout.addWidget(self.navigationInterface)
替换窗口基类 ```python
from PyQt6.QtWidgets import QMainWindow class MainWindow(QMainWindow):
# 改为 from qfluentwidgets import FluentWindow class MainWindow(FluentWindow):
2. **替换按钮**
```python
# 原来
from PyQt6.QtWidgets import QPushButton
btn = QPushButton("登录")
# 改为
from qfluentwidgets import PrimaryPushButton
btn = PrimaryPushButton("登录")
替换输入框 ```python
from PyQt6.QtWidgets import QLineEdit input = QLineEdit()
# 改为 from qfluentwidgets import LineEdit input = LineEdit()
4. **添加图标**
```python
import qtawesome as qta
btn.setIcon(qta.icon('fa.user'))
统一使用qfluentwidgets组件
合理使用图标
主题切换
响应式设计
性能优化