or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

buttons.mddialog-notification.mddisplay-widgets.mdindex.mdinput-controls.mdlayout-animation.mdlist-view-widgets.mdmaterial-effects.mdmenu-command.mdmultimedia.mdsettings-config.mdtheme-styling.mdwindow-navigation.md

index.mddocs/

0

# PyQt-Fluent-Widgets

1

2

A comprehensive fluent design widgets library for PyQt5 applications, enabling developers to create modern Windows 11-style user interfaces with native fluent design components. This library provides an extensive collection of UI widgets including buttons, input controls, navigation components, dialogs, and advanced material effects like acrylic backgrounds, all following Microsoft's Fluent Design System principles.

3

4

## Package Information

5

6

- **Package Name**: PyQt-Fluent-Widgets

7

- **Import Name**: qfluentwidgets

8

- **Language**: Python

9

- **Installation**: `pip install PyQt-Fluent-Widgets`

10

- **Dependencies**: PyQt5>=5.15.0, PyQt5-Frameless-Window>=0.4.0, darkdetect

11

- **Optional Dependencies**: scipy, pillow, colorthief (install with `pip install PyQt-Fluent-Widgets[full]`)

12

13

## Core Imports

14

15

```python

16

import qfluentwidgets

17

```

18

19

Common import patterns:

20

21

```python

22

from qfluentwidgets import (

23

FluentWindow, NavigationInterface, PushButton, PrimaryPushButton,

24

FluentIcon, setTheme, Theme, setThemeColor

25

)

26

```

27

28

Icon imports:

29

30

```python

31

from qfluentwidgets import FluentIcon as FIF

32

```

33

34

## Basic Usage

35

36

```python

37

import sys

38

from PyQt5.QtCore import Qt

39

from PyQt5.QtWidgets import QApplication, QWidget

40

from qfluentwidgets import (

41

FluentWindow, NavigationInterface, PushButton, PrimaryPushButton,

42

FluentIcon as FIF, setTheme, Theme, NavigationItemPosition,

43

NavigationAvatarWidget

44

)

45

46

class MainWindow(FluentWindow):

47

def __init__(self):

48

super().__init__()

49

self.initWindow()

50

self.initNavigation()

51

52

def initWindow(self):

53

self.resize(900, 700)

54

self.setWindowTitle('Fluent App')

55

56

# Apply theme

57

setTheme(Theme.AUTO)

58

59

def initNavigation(self):

60

# Create interfaces

61

self.homeInterface = QWidget()

62

self.settingsInterface = QWidget()

63

64

# Add to navigation

65

self.addSubInterface(self.homeInterface, FIF.HOME, 'Home')

66

self.addSubInterface(self.settingsInterface, FIF.SETTING, 'Settings')

67

68

# Add separator and avatar

69

self.navigationInterface.addSeparator()

70

self.navigationInterface.addWidget(

71

routeKey='avatar',

72

widget=NavigationAvatarWidget('User', 'avatar.png'),

73

position=NavigationItemPosition.BOTTOM

74

)

75

76

if __name__ == '__main__':

77

# High DPI support

78

QApplication.setHighDpiScaleFactorRoundingPolicy(

79

Qt.HighDpiScaleFactorRoundingPolicy.PassThrough

80

)

81

QApplication.setAttribute(Qt.AA_EnableHighDpiScaling)

82

QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps)

83

84

app = QApplication(sys.argv)

85

window = MainWindow()

86

window.show()

87

app.exec_()

88

```

89

90

## Architecture

91

92

The library is organized around five core modules that provide comprehensive fluent design functionality:

93

94

- **Components**: The main widget collection including buttons, inputs, navigation, dialogs, and material effects

95

- **Common**: Theme system, configuration, icons, styling, and utility functions

96

- **Window**: Fluent-styled window classes with integrated navigation

97

- **Multimedia**: Media player components for audio/video playback

98

- **Resources**: Embedded resources including icons and stylesheets

99

100

The architecture follows Microsoft's Fluent Design System principles with automatic theme detection, smooth animations, and modern visual effects.

101

102

## Capabilities

103

104

### Button Widgets

105

106

Modern button components with fluent design styling, supporting multiple constructor patterns, icons, and various visual styles including primary, transparent, toggle, and hyperlink variants.

107

108

```python { .api }

109

class PushButton(QPushButton):

110

def __init__(self, parent: QWidget = None): ...

111

def __init__(self, text: str, parent: QWidget = None, icon: Union[QIcon, str, FluentIconBase] = None): ...

112

def __init__(self, icon: Union[QIcon, FluentIconBase], text: str, parent: QWidget = None): ...

113

114

class PrimaryPushButton(PushButton): ...

115

class TransparentPushButton(PushButton): ...

116

class TogglePushButton(PushButton): ...

117

class HyperlinkButton(QPushButton):

118

def __init__(self, url: str, text: str, parent: QWidget = None, icon: Union[QIcon, FluentIconBase, str] = None): ...

119

```

120

121

[Button Widgets](./buttons.md)

122

123

### Window and Navigation

124

125

Fluent-styled windows with integrated navigation interfaces, supporting hierarchical navigation, route-based page switching, and modern title bars with system integration.

126

127

```python { .api }

128

class FluentWindow(FluentWindowBase):

129

def __init__(self, parent=None): ...

130

def addSubInterface(self, interface: QWidget, icon: Union[FluentIconBase, QIcon, str], text: str,

131

position=NavigationItemPosition.TOP, parent=None, isTransparent=False) -> NavigationTreeWidget: ...

132

133

class NavigationInterface(QWidget):

134

def __init__(self, parent=None, showMenuButton=True, showReturnButton=False, collapsible=True): ...

135

def addItem(self, routeKey: str, icon: Union[str, QIcon, FluentIconBase], text: str, onClick=None,

136

selectable=True, position=NavigationItemPosition.TOP, tooltip: str = None,

137

parentRouteKey: str = None) -> NavigationTreeWidget: ...

138

```

139

140

[Window and Navigation](./window-navigation.md)

141

142

### Input Controls

143

144

Comprehensive form controls including text inputs, combo boxes, sliders, date/time pickers, and spinboxes with fluent design styling and advanced features.

145

146

```python { .api }

147

class LineEdit(QLineEdit):

148

def __init__(self, parent=None): ...

149

150

class ComboBox(QComboBox):

151

def __init__(self, parent=None): ...

152

def setPlaceholderText(self, text: str): ...

153

154

class SearchLineEdit(LineEdit): ...

155

class PasswordLineEdit(LineEdit): ...

156

class TextEdit(QTextEdit): ...

157

class PlainTextEdit(QPlainTextEdit): ...

158

```

159

160

[Input Controls](./input-controls.md)

161

162

### Display Widgets

163

164

Labels, images, cards, and container widgets for displaying content with fluent design typography and layout patterns.

165

166

```python { .api }

167

class CardWidget(QWidget):

168

def __init__(self, parent=None): ...

169

170

class ElevatedCardWidget(CardWidget): ...

171

class SimpleCardWidget(CardWidget): ...

172

class HeaderCardWidget(CardWidget): ...

173

174

class BodyLabel(QLabel): ...

175

class TitleLabel(QLabel): ...

176

class SubtitleLabel(QLabel): ...

177

class LargeTitleLabel(QLabel): ...

178

class DisplayLabel(QLabel): ...

179

class ImageLabel(QLabel): ...

180

class AvatarWidget(QLabel): ...

181

class PixmapLabel(QLabel): ...

182

class IconWidget(QWidget): ...

183

```

184

185

[Display Widgets](./display-widgets.md)

186

187

### List and View Widgets

188

189

Advanced list, table, and tree components with custom delegates, smooth scrolling, and fluent design integration.

190

191

```python { .api }

192

class ListWidget(QListWidget): ...

193

class ListView(QListView): ...

194

class TableWidget(QTableWidget): ...

195

class TableView(QTableView): ...

196

class TreeWidget(QTreeWidget): ...

197

class TreeView(QTreeView): ...

198

class CycleListWidget(QListWidget): ...

199

200

class ListItemDelegate(QStyledItemDelegate): ...

201

class TableItemDelegate(QStyledItemDelegate): ...

202

class TreeItemDelegate(QStyledItemDelegate): ...

203

```

204

205

[List and View Widgets](./list-view-widgets.md)

206

207

### Menu and Command System

208

209

Context menus, command bars, and system tray menus with fluent styling, animations, and modern interaction patterns.

210

211

```python { .api }

212

class RoundMenu(QMenu): ...

213

class DWMMenu(QMenu): ...

214

class LineEditMenu(RoundMenu): ...

215

class CheckableMenu(RoundMenu): ...

216

class SystemTrayMenu(QMenu): ...

217

class CheckableSystemTrayMenu(SystemTrayMenu): ...

218

219

class CommandBar(QWidget): ...

220

class CommandButton(QToolButton): ...

221

class CommandBarView(QWidget): ...

222

```

223

224

[Menu and Command System](./menu-command.md)

225

226

### Dialog and Notification System

227

228

Modal dialogs, message boxes, flyouts, and notification components with fluent design animations and positioning.

229

230

```python { .api }

231

class MessageBox(MaskDialogBase): ...

232

class MessageDialog(MaskDialogBase): ...

233

class Dialog(MaskDialogBase): ...

234

class ColorDialog(MaskDialogBase): ...

235

class FolderListDialog(MaskDialogBase): ...

236

237

class InfoBar(QWidget): ...

238

class InfoBadge(QWidget): ...

239

class DotInfoBadge(InfoBadge): ...

240

class IconInfoBadge(InfoBadge): ...

241

242

class TeachingTip(QWidget): ...

243

class PopupTeachingTip(TeachingTip): ...

244

class Flyout(QWidget): ...

245

class FlyoutView(QWidget): ...

246

class ToolTip(QWidget): ...

247

class StateToolTip(QWidget): ...

248

```

249

250

[Dialog and Notification System](./dialog-notification.md)

251

252

### Settings and Configuration

253

254

Setting cards, configuration management, and option panels for building preference interfaces with validation and persistence.

255

256

```python { .api }

257

class SettingCard(QWidget): ...

258

class SwitchSettingCard(SettingCard): ...

259

class ComboBoxSettingCard(SettingCard): ...

260

class RangeSettingCard(SettingCard): ...

261

class PushSettingCard(SettingCard): ...

262

class ColorSettingCard(SettingCard): ...

263

class HyperlinkCard(SettingCard): ...

264

class ExpandSettingCard(SettingCard): ...

265

class FolderListSettingCard(SettingCard): ...

266

class OptionsSettingCard(SettingCard): ...

267

class SettingCardGroup(QWidget): ...

268

269

class QConfig(QObject): ...

270

class ConfigItem: ...

271

class ConfigValidator: ...

272

```

273

274

[Settings and Configuration](./settings-config.md)

275

276

### Material Effects

277

278

Acrylic blur effects, material design components, and advanced visual effects for modern UI aesthetics.

279

280

```python { .api }

281

class AcrylicWidget(QWidget): ...

282

class AcrylicBrush(QBrush): ...

283

284

class AcrylicMenu(RoundMenu): ...

285

class AcrylicLineEditMenu(RoundMenu): ...

286

class AcrylicCheckableMenu(RoundMenu): ...

287

class AcrylicSystemTrayMenu(SystemTrayMenu): ...

288

289

class AcrylicLineEdit(LineEdit): ...

290

class AcrylicSearchLineEdit(SearchLineEdit): ...

291

class AcrylicComboBox(ComboBox): ...

292

class AcrylicEditableComboBox(EditableComboBox): ...

293

294

class AcrylicFlyout(Flyout): ...

295

class AcrylicFlyoutView(FlyoutView): ...

296

class AcrylicToolTip(ToolTip): ...

297

```

298

299

[Material Effects](./material-effects.md)

300

301

### Theme and Styling System

302

303

Comprehensive theme management with automatic dark/light mode detection, color customization, and fluent design stylesheets.

304

305

```python { .api }

306

class Theme(Enum):

307

LIGHT = "Light"

308

DARK = "Dark"

309

AUTO = "Auto"

310

311

def setTheme(theme: Theme): ...

312

def setThemeColor(color: QColor): ...

313

def isDarkTheme() -> bool: ...

314

def toggleTheme(): ...

315

316

class FluentIcon(FluentIconBase, Enum): ...

317

class ThemeColor(Enum): ...

318

```

319

320

[Theme and Styling System](./theme-styling.md)

321

322

### Layout and Animation

323

324

Advanced layout managers, smooth scrolling, animated containers, and transition effects for fluid user experiences.

325

326

```python { .api }

327

class FlowLayout(QLayout): ...

328

class ExpandLayout(QVBoxLayout): ...

329

class VBoxLayout(QVBoxLayout): ...

330

331

class ScrollArea(QScrollArea): ...

332

class SmoothScrollArea(ScrollArea): ...

333

class SingleDirectionScrollArea(ScrollArea): ...

334

class SmoothScrollBar(QScrollBar): ...

335

336

class PopUpAniStackedWidget(QStackedWidget): ...

337

class OpacityAniStackedWidget(QStackedWidget): ...

338

339

class ProgressBar(QProgressBar): ...

340

class ProgressRing(QWidget): ...

341

class IndeterminateProgressBar(ProgressBar): ...

342

class IndeterminateProgressRing(ProgressRing): ...

343

```

344

345

[Layout and Animation](./layout-animation.md)

346

347

### Multimedia Components

348

349

Media player widgets, video display, and audio/video control components with modern playback interfaces.

350

351

```python { .api }

352

class MediaPlayer(QWidget): ...

353

class MediaPlayerBase(QWidget): ...

354

class VideoWidget(QVideoWidget): ...

355

class StandardMediaPlayBar(QWidget): ...

356

class SimpleMediaPlayBar(QWidget): ...

357

class MediaPlayBarButton(QToolButton): ...

358

```

359

360

[Multimedia Components](./multimedia.md)

361

362

## Error Handling

363

364

Common exceptions that may be raised:

365

366

- **ImportError**: When required PyQt5 dependencies are not installed

367

- **AttributeError**: When accessing undefined widget properties or methods

368

- **ValueError**: When providing invalid parameters to configuration functions

369

- **RuntimeError**: When widget operations are performed outside the main thread

370

371

Most widget methods follow PyQt5 conventions and raise standard Qt exceptions for invalid operations.