xsideui 0.9.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- xsideui-0.9.1/PKG-INFO +343 -0
- xsideui-0.9.1/README.md +330 -0
- xsideui-0.9.1/pyproject.toml +20 -0
- xsideui-0.9.1/setup.cfg +4 -0
- xsideui-0.9.1/setup.py +70 -0
- xsideui-0.9.1/src/xsideui/__init__.py +89 -0
- xsideui-0.9.1/src/xsideui/i18n/__init__.py +1 -0
- xsideui-0.9.1/src/xsideui/i18n/i18n.py +214 -0
- xsideui-0.9.1/src/xsideui/icon/__init__.py +125 -0
- xsideui-0.9.1/src/xsideui/icon/icon_name.py +369 -0
- xsideui-0.9.1/src/xsideui/icon/xicon.py +435 -0
- xsideui-0.9.1/src/xsideui/icon/xicon_cache.py +257 -0
- xsideui-0.9.1/src/xsideui/icon/xicon_engine.py +382 -0
- xsideui-0.9.1/src/xsideui/icon/xicon_theme.py +137 -0
- xsideui-0.9.1/src/xsideui/icon/xicons_rc.py +16683 -0
- xsideui-0.9.1/src/xsideui/theme/__init__.py +13 -0
- xsideui-0.9.1/src/xsideui/theme/color_json/dark.json +165 -0
- xsideui-0.9.1/src/xsideui/theme/color_json/light.json +165 -0
- xsideui-0.9.1/src/xsideui/theme/qss/avatar.qss +14 -0
- xsideui-0.9.1/src/xsideui/theme/qss/card.qss +47 -0
- xsideui-0.9.1/src/xsideui/theme/qss/carousel.qss +32 -0
- xsideui-0.9.1/src/xsideui/theme/qss/checkbox.qss +13 -0
- xsideui-0.9.1/src/xsideui/theme/qss/codeblock.qss +82 -0
- xsideui-0.9.1/src/xsideui/theme/qss/collapse.qss +37 -0
- xsideui-0.9.1/src/xsideui/theme/qss/combobox.qss +112 -0
- xsideui-0.9.1/src/xsideui/theme/qss/dialog.qss +13 -0
- xsideui-0.9.1/src/xsideui/theme/qss/divider.qss +34 -0
- xsideui-0.9.1/src/xsideui/theme/qss/groupbox.qss +23 -0
- xsideui-0.9.1/src/xsideui/theme/qss/label.qss +51 -0
- xsideui-0.9.1/src/xsideui/theme/qss/lineedit.qss +103 -0
- xsideui-0.9.1/src/xsideui/theme/qss/listwidget.qss +61 -0
- xsideui-0.9.1/src/xsideui/theme/qss/loading_mask.qss +12 -0
- xsideui-0.9.1/src/xsideui/theme/qss/menu.qss +38 -0
- xsideui-0.9.1/src/xsideui/theme/qss/navbar.qss +30 -0
- xsideui-0.9.1/src/xsideui/theme/qss/navtree.qss +73 -0
- xsideui-0.9.1/src/xsideui/theme/qss/notification.qss +33 -0
- xsideui-0.9.1/src/xsideui/theme/qss/pagination.qss +38 -0
- xsideui-0.9.1/src/xsideui/theme/qss/popover.qss +28 -0
- xsideui-0.9.1/src/xsideui/theme/qss/progressbar.qss +28 -0
- xsideui-0.9.1/src/xsideui/theme/qss/pushbutton.qss +730 -0
- xsideui-0.9.1/src/xsideui/theme/qss/qdateedit.qss +82 -0
- xsideui-0.9.1/src/xsideui/theme/qss/qdatetimeedit.qss +82 -0
- xsideui-0.9.1/src/xsideui/theme/qss/qtimeedit.qss +82 -0
- xsideui-0.9.1/src/xsideui/theme/qss/radio.qss +12 -0
- xsideui-0.9.1/src/xsideui/theme/qss/scrollarea.qss +69 -0
- xsideui-0.9.1/src/xsideui/theme/qss/spinbox.qss +92 -0
- xsideui-0.9.1/src/xsideui/theme/qss/tablewidget.qss +130 -0
- xsideui-0.9.1/src/xsideui/theme/qss/tabwidget.qss +53 -0
- xsideui-0.9.1/src/xsideui/theme/qss/text_edit.qss +79 -0
- xsideui-0.9.1/src/xsideui/theme/qss/title_bar.qss +23 -0
- xsideui-0.9.1/src/xsideui/theme/qss/upload.qss +26 -0
- xsideui-0.9.1/src/xsideui/theme/qss/widget.qss +8 -0
- xsideui-0.9.1/src/xsideui/theme/qss_loader.py +247 -0
- xsideui-0.9.1/src/xsideui/theme/theme.py +723 -0
- xsideui-0.9.1/src/xsideui/theme/theme_types.py +54 -0
- xsideui-0.9.1/src/xsideui/theme/thmem_config.py +70 -0
- xsideui-0.9.1/src/xsideui/utils/__init__.py +0 -0
- xsideui-0.9.1/src/xsideui/utils/qt_compat.py +96 -0
- xsideui-0.9.1/src/xsideui/widgets/__init__.py +94 -0
- xsideui-0.9.1/src/xsideui/widgets/badge.py +445 -0
- xsideui-0.9.1/src/xsideui/widgets/card.py +432 -0
- xsideui-0.9.1/src/xsideui/widgets/carousel.py +197 -0
- xsideui-0.9.1/src/xsideui/widgets/checkbox.py +370 -0
- xsideui-0.9.1/src/xsideui/widgets/codeblock.py +137 -0
- xsideui-0.9.1/src/xsideui/widgets/collapse.py +160 -0
- xsideui-0.9.1/src/xsideui/widgets/combobox.py +186 -0
- xsideui-0.9.1/src/xsideui/widgets/dateedit.py +98 -0
- xsideui-0.9.1/src/xsideui/widgets/datetimeedit.py +111 -0
- xsideui-0.9.1/src/xsideui/widgets/dialog.py +248 -0
- xsideui-0.9.1/src/xsideui/widgets/divider.py +101 -0
- xsideui-0.9.1/src/xsideui/widgets/flow_layout.py +160 -0
- xsideui-0.9.1/src/xsideui/widgets/groupbox.py +53 -0
- xsideui-0.9.1/src/xsideui/widgets/image.py +501 -0
- xsideui-0.9.1/src/xsideui/widgets/label.py +360 -0
- xsideui-0.9.1/src/xsideui/widgets/lineedit.py +321 -0
- xsideui-0.9.1/src/xsideui/widgets/listwidget.py +61 -0
- xsideui-0.9.1/src/xsideui/widgets/loading_mask.py +279 -0
- xsideui-0.9.1/src/xsideui/widgets/menu.py +155 -0
- xsideui-0.9.1/src/xsideui/widgets/messagebox.py +170 -0
- xsideui-0.9.1/src/xsideui/widgets/navbar.py +395 -0
- xsideui-0.9.1/src/xsideui/widgets/navbartree.py +216 -0
- xsideui-0.9.1/src/xsideui/widgets/notification.py +496 -0
- xsideui-0.9.1/src/xsideui/widgets/pagination.py +283 -0
- xsideui-0.9.1/src/xsideui/widgets/popover.py +269 -0
- xsideui-0.9.1/src/xsideui/widgets/progressbar.py +636 -0
- xsideui-0.9.1/src/xsideui/widgets/pushbutton.py +520 -0
- xsideui-0.9.1/src/xsideui/widgets/radio.py +334 -0
- xsideui-0.9.1/src/xsideui/widgets/scrollarea.py +21 -0
- xsideui-0.9.1/src/xsideui/widgets/slider.py +322 -0
- xsideui-0.9.1/src/xsideui/widgets/spinbox.py +254 -0
- xsideui-0.9.1/src/xsideui/widgets/switch.py +373 -0
- xsideui-0.9.1/src/xsideui/widgets/tablewidget.py +258 -0
- xsideui-0.9.1/src/xsideui/widgets/tabwidget.py +177 -0
- xsideui-0.9.1/src/xsideui/widgets/text_edit.py +56 -0
- xsideui-0.9.1/src/xsideui/widgets/timeedit.py +98 -0
- xsideui-0.9.1/src/xsideui/widgets/title_bar.py +190 -0
- xsideui-0.9.1/src/xsideui/widgets/upload.py +378 -0
- xsideui-0.9.1/src/xsideui/widgets/widget.py +445 -0
- xsideui-0.9.1/src/xsideui/widgets/xarrowbutton.py +44 -0
- xsideui-0.9.1/src/xsideui/xenum.py +37 -0
- xsideui-0.9.1/src/xsideui.egg-info/PKG-INFO +343 -0
- xsideui-0.9.1/src/xsideui.egg-info/SOURCES.txt +102 -0
- xsideui-0.9.1/src/xsideui.egg-info/dependency_links.txt +1 -0
- xsideui-0.9.1/src/xsideui.egg-info/top_level.txt +1 -0
xsideui-0.9.1/PKG-INFO
ADDED
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: xsideui
|
|
3
|
+
Version: 0.9.1
|
|
4
|
+
Summary: A modern PySide2 / PySide6 component library with rich UI components and theme support
|
|
5
|
+
Home-page: https://github.com/yourusername/xsideui
|
|
6
|
+
Author: heng zhi qi
|
|
7
|
+
Author-email: heng zhi qi <efupay@foxmail.com>
|
|
8
|
+
Project-URL: Homepage, https://github.com/yourusername/xsideui
|
|
9
|
+
Project-URL: Documentation, https://github.com/yourusername/xsideui#readme
|
|
10
|
+
Project-URL: Repository, https://github.com/yourusername/xsideui.git
|
|
11
|
+
Requires-Python: >=3.8
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
|
|
14
|
+
# XSideUI
|
|
15
|
+
|
|
16
|
+
<div align="center">
|
|
17
|
+
|
|
18
|
+

|
|
19
|
+

|
|
20
|
+

|
|
21
|
+

|
|
22
|
+
|
|
23
|
+
**一款现代化的 Python Qt UI 组件库(PySide2 / PySide6)**
|
|
24
|
+
|
|
25
|
+
[快速开始](#快速开始) • [组件文档](#组件列表) • [主题系统](#主题系统) • [示例代码](#使用示例)
|
|
26
|
+
|
|
27
|
+
</div>
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## ✨ 特性
|
|
32
|
+
|
|
33
|
+
### 🎯 框架兼容
|
|
34
|
+
|
|
35
|
+
- **零成本接入 PySide2/PySide6** – 深度适配 Qt 生态,一套代码无缝切换双版本,告别兼容性困扰
|
|
36
|
+
- **跨平台通用** – Windows、Linux、macOS 全平台支持,构建一致体验
|
|
37
|
+
|
|
38
|
+
### ⚡️ 性能体验
|
|
39
|
+
|
|
40
|
+
- **极致轻量** – 核心库零外部依赖,体积小巧,秒级加载不拖沓
|
|
41
|
+
- **智能渲染引擎** – 内置缓存优化机制,界面流畅丝滑,告别卡顿
|
|
42
|
+
|
|
43
|
+
### 🎨 视觉设计
|
|
44
|
+
|
|
45
|
+
- **现代美学体系** – 精雕细琢的视觉语言,从色彩到动效,尽显专业质感
|
|
46
|
+
- **全局视觉统一** – 颜色、字体、间距、圆角遵循 Qt 设计规范,界面浑然一体
|
|
47
|
+
- **智能主题引擎** – 明暗主题一键切换,支持动态配色,适配不同场景需求
|
|
48
|
+
|
|
49
|
+
### 🧩 组件生态
|
|
50
|
+
|
|
51
|
+
- **30+ 开箱组件** – 按钮、卡片、对话框、菜单等高频组件全覆盖
|
|
52
|
+
- **命名零门槛** – XPushButton、XComboBox 与 Qt 原生命名保持一致,零学习成本上手
|
|
53
|
+
- **图标引擎内置** – SVG 图标动态着色,明暗主题自适应,图标管理从未如此简单
|
|
54
|
+
|
|
55
|
+
### 🔧 定制能力
|
|
56
|
+
|
|
57
|
+
- **链式调用 API** – 灵活优雅的定制方式,一行代码完成样式配置
|
|
58
|
+
- **深度定制支持** – 从基础属性到复杂交互,满足各类定制需求
|
|
59
|
+
|
|
60
|
+
### 📖 开发者友好
|
|
61
|
+
|
|
62
|
+
- **中文优先** – 完整的中文文档 + 代码注释,扫清语言障碍
|
|
63
|
+
- **示例即用** – 配套丰富的示例工程,复制粘贴即可运行,快速验证效果
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
## ✨ 样式展示
|
|
68
|
+
|
|
69
|
+

|
|
70
|
+
|
|
71
|
+
## 📦 安装
|
|
72
|
+
|
|
73
|
+
```python
|
|
74
|
+
pip install xsideui
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## 🚀 快速开始
|
|
80
|
+
|
|
81
|
+
### 基础示例
|
|
82
|
+
|
|
83
|
+
```python
|
|
84
|
+
from PySide2.QtWidgets import QApplication
|
|
85
|
+
from xsideui import XPushButton, XColor, XButtonVariant
|
|
86
|
+
|
|
87
|
+
app = QApplication([])
|
|
88
|
+
|
|
89
|
+
# 创建按钮
|
|
90
|
+
button = XPushButton("点击我", color=XColor.PRIMARY, variant=XButtonVariant.SOLID)
|
|
91
|
+
button.show()
|
|
92
|
+
|
|
93
|
+
app.exec_()
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 主题切换
|
|
97
|
+
|
|
98
|
+
```python
|
|
99
|
+
from xsideui import theme_manager
|
|
100
|
+
|
|
101
|
+
# 切换到暗色主题
|
|
102
|
+
theme_manager.set_theme("dark")
|
|
103
|
+
|
|
104
|
+
# 明暗切换
|
|
105
|
+
theme_manager.toggle_theme()
|
|
106
|
+
|
|
107
|
+
# 自定义主题色
|
|
108
|
+
theme_manager.set_primary_colors({
|
|
109
|
+
"light": "#ab7ae0",
|
|
110
|
+
"dark": "#51258f"
|
|
111
|
+
})
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## 🎨 主题系统
|
|
117
|
+
|
|
118
|
+
XSideUI 提供强大的主题管理系统,支持:
|
|
119
|
+
|
|
120
|
+
- ✅ **明暗主题切换** - 一键切换亮色/暗色模式
|
|
121
|
+
- ✅ **自定义主题色** - 灵活配置主题颜色
|
|
122
|
+
- ✅ **主题预加载** - 快速切换,无延迟
|
|
123
|
+
- ✅ **智能缓存** - 优化性能,减少重复计算
|
|
124
|
+
|
|
125
|
+
### 主题颜色
|
|
126
|
+
|
|
127
|
+
| 颜色 | 说明 |
|
|
128
|
+
|------|------|
|
|
129
|
+
| `primary` | 主题色 |
|
|
130
|
+
| `secondary` | 次要色 |
|
|
131
|
+
| `success` | 成功色 |
|
|
132
|
+
| `warning` | 警告色 |
|
|
133
|
+
| `danger` | 危险色 |
|
|
134
|
+
| `tertiary` | 浅色 |
|
|
135
|
+
|
|
136
|
+
详细主题文档:[Theme.md](docs/Theme.md)
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## 📚 组件列表
|
|
141
|
+
|
|
142
|
+
### 基础组件
|
|
143
|
+
|
|
144
|
+
| 组件 | 说明 | 文档 |
|
|
145
|
+
|------|------|------|
|
|
146
|
+
| [XPushButton](docs/XPushButton.md) | 按钮组件 | 📖 |
|
|
147
|
+
| [XLabel](docs/XLabel.md) | 标签组件 | 📖 |
|
|
148
|
+
| [XIcon](docs/XIcon.md) | 图标组件 | 📖 |
|
|
149
|
+
| [XBadge](docs/XBadge.md) | 徽章组件 | 📖 |
|
|
150
|
+
| [XDivider](docs/XDivider.md) | 分隔线组件 | 📖 |
|
|
151
|
+
|
|
152
|
+
### 表单组件
|
|
153
|
+
|
|
154
|
+
| 组件 | 说明 | 文档 |
|
|
155
|
+
|------|------|------|
|
|
156
|
+
| [XLineEdit](docs/XLineEdit.md) | 单行输入框 | 📖 |
|
|
157
|
+
| [XTextEdit](docs/XTextEdit.md) | 多行文本框 | 📖 |
|
|
158
|
+
| [XSpinBox](docs/XSpinBox.md) | 数字输入框 | 📖 |
|
|
159
|
+
| [XComboBox](docs/XComboBox.md) | 下拉选择框 | 📖 |
|
|
160
|
+
| [XCheckBox](docs/XCheckBox.md) | 复选框 | 📖 |
|
|
161
|
+
| [XRadioButton](docs/XRadioButton.md) | 单选按钮 | 📖 |
|
|
162
|
+
| [XSwitch](docs/XSwitch.md) | 开关组件 | 📖 |
|
|
163
|
+
| [XSlider](docs/XSlider.md) | 滑块组件 | 📖 |
|
|
164
|
+
| [XQDateEdit](docs/XQDateEdit.md) | 日期选择器 | 📖 |
|
|
165
|
+
| [XQTimeEdit](docs/XQTimeEdit.md) | 时间选择器 | 📖 |
|
|
166
|
+
| [XQDateTimeEdit](docs/XQDateTimeEdit.md) | 日期时间选择器 | 📖 |
|
|
167
|
+
|
|
168
|
+
### 数据展示
|
|
169
|
+
|
|
170
|
+
| 组件 | 说明 | 文档 |
|
|
171
|
+
|------|------|------|
|
|
172
|
+
| [XTableWidget](docs/XTableWidget.md) | 表格组件 | 📖 |
|
|
173
|
+
| [XListWidget](docs/XListWidget.md) | 列表组件 | 📖 |
|
|
174
|
+
| [XTreeWidget](docs/XTreeWidget.md) | 树形组件 | 📖 |
|
|
175
|
+
| [XCard](docs/XCard.md) | 卡片组件 | 📖 |
|
|
176
|
+
| [XGroupBox](docs/XGroupBox.md) | 分组框组件 | 📖 |
|
|
177
|
+
| [XImage](docs/XImage.md) | 图片组件 | 📖 |
|
|
178
|
+
| [XCodeBlock](docs/XCodeBlock.md) | 代码块组件 | 📖 |
|
|
179
|
+
|
|
180
|
+
### 导航组件
|
|
181
|
+
|
|
182
|
+
| 组件 | 说明 | 文档 |
|
|
183
|
+
|------|------|------|
|
|
184
|
+
| [XTabWidget](docs/XTabWidget.md) | 标签页组件 | 📖 |
|
|
185
|
+
| [XNavSimple](docs/XNavSimple.md) | 简单导航 | 📖 |
|
|
186
|
+
| [XNavTree](docs/XNavTree.md) | 树形导航 | 📖 |
|
|
187
|
+
| [XPagination](docs/XPagination.md) | 分页组件 | 📖 |
|
|
188
|
+
| [XMenu](docs/XMenu.md) | 菜单组件 | 📖 |
|
|
189
|
+
| [XPopover](docs/XPopover.md) | 气泡组件 | 📖 |
|
|
190
|
+
|
|
191
|
+
### 反馈组件
|
|
192
|
+
|
|
193
|
+
| 组件 | 说明 | 文档 |
|
|
194
|
+
|------|------|------|
|
|
195
|
+
| [XMessageBox](docs/XMessageBox.md) | 消息对话框 | 📖 |
|
|
196
|
+
| [XNotif](docs/XNotif.md) | 通知组件 | 📖 |
|
|
197
|
+
| [XProgressBar](docs/XProgressBar.md) | 进度条组件 | 📖 |
|
|
198
|
+
| [XLoadingMask](docs/XLoadingMask.md) | 加载遮罩 | 📖 |
|
|
199
|
+
|
|
200
|
+
### 布局组件
|
|
201
|
+
|
|
202
|
+
| 组件 | 说明 | 文档 |
|
|
203
|
+
|------|------|------|
|
|
204
|
+
| [XWidget](docs/XWidget.md) | 容器组件 | 📖 |
|
|
205
|
+
| [XScrollArea](docs/XScrollArea.md) | 滚动区域 | 📖 |
|
|
206
|
+
| [XCollapse](docs/XCollapse.md) | 折叠面板 | 📖 |
|
|
207
|
+
| [XCarousel](docs/XCarousel.md) | 轮播组件 | 📖 |
|
|
208
|
+
|
|
209
|
+
### 其他组件
|
|
210
|
+
|
|
211
|
+
| 组件 | 说明 | 文档 |
|
|
212
|
+
|------|------|------|
|
|
213
|
+
| [XTitleBar](docs/XTitleBar.md) | 标题栏组件 | 📖 |
|
|
214
|
+
| [XUpload](docs/XUpload.md) | 上传组件 | 📖 |
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## 💡 使用示例
|
|
219
|
+
|
|
220
|
+
### 按钮组件
|
|
221
|
+
|
|
222
|
+
```python
|
|
223
|
+
from xsideui import XPushButton, XColor, XButtonVariant, XSize
|
|
224
|
+
|
|
225
|
+
# 不同变体
|
|
226
|
+
button1 = XPushButton("实心按钮", variant=XButtonVariant.SOLID, color=XColor.PRIMARY)
|
|
227
|
+
button2 = XPushButton("描边按钮", variant=XButtonVariant.OUTLINED, color=XColor.PRIMARY)
|
|
228
|
+
button3 = XPushButton("文本按钮", variant=XButtonVariant.TEXT, color=XColor.PRIMARY)
|
|
229
|
+
|
|
230
|
+
# 带图标
|
|
231
|
+
button4 = XPushButton("提交", icon="check", color=XColor.SUCCESS)
|
|
232
|
+
|
|
233
|
+
# Loading 状态
|
|
234
|
+
button5 = XPushButton("保存")
|
|
235
|
+
button5.set_loading(True)
|
|
236
|
+
|
|
237
|
+
# 链式调用
|
|
238
|
+
button6 = XPushButton("按钮") \
|
|
239
|
+
.set_variant(XButtonVariant.FILLED) \
|
|
240
|
+
.set_color(XColor.WARNING) \
|
|
241
|
+
.set_size(XSize.LARGE)
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### 卡片组件
|
|
245
|
+
|
|
246
|
+
```python
|
|
247
|
+
from xsideui import XCard, XHeaderCard, XGroupCard, XLabel
|
|
248
|
+
|
|
249
|
+
# 基础卡片
|
|
250
|
+
card1 = XCard()
|
|
251
|
+
card1.addWidget(XLabel("卡片内容"))
|
|
252
|
+
|
|
253
|
+
# 标题卡片
|
|
254
|
+
card2 = XHeaderCard(title="设置")
|
|
255
|
+
card2.addWidget(XLabel("内容"))
|
|
256
|
+
|
|
257
|
+
# 分组卡片
|
|
258
|
+
card3 = XGroupCard(title="配置")
|
|
259
|
+
card3.add_group().add(XLabel("分组1"))
|
|
260
|
+
card3.add_group().add(XLabel("分组2"))
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### 表格组件
|
|
264
|
+
|
|
265
|
+
```python
|
|
266
|
+
from xsideui import XTableWidget
|
|
267
|
+
|
|
268
|
+
table = XTableWidget()
|
|
269
|
+
table.set_headers(["姓名", "年龄", "城市"])
|
|
270
|
+
table.add_row(["张三", 25, "北京"])
|
|
271
|
+
table.add_row(["李四", 30, "上海"])
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### 导航组件
|
|
275
|
+
|
|
276
|
+
```python
|
|
277
|
+
from xsideui import XTabWidget
|
|
278
|
+
|
|
279
|
+
tabs = XTabWidget()
|
|
280
|
+
tabs.add_tab("标签1", XLabel("内容1"))
|
|
281
|
+
tabs.add_tab("标签2", XLabel("内容2"))
|
|
282
|
+
tabs.add_tab("标签3", XLabel("内容3"))
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## 🏗️ 项目结构
|
|
288
|
+
|
|
289
|
+
```
|
|
290
|
+
xsideui/
|
|
291
|
+
├── docs/ # 组件文档
|
|
292
|
+
├── src/
|
|
293
|
+
│ └── xsideui/
|
|
294
|
+
│ ├── widgets/ # UI 组件
|
|
295
|
+
│ ├── theme/ # 主题系统
|
|
296
|
+
│ ├── icon/ # 图标引擎
|
|
297
|
+
│ ├── xenum/ # 枚举定义
|
|
298
|
+
│ └── utils/ # 工具函数
|
|
299
|
+
└── examples/ # 示例代码
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
## 🤝 贡献
|
|
305
|
+
|
|
306
|
+
欢迎贡献代码、报告问题或提出建议!
|
|
307
|
+
|
|
308
|
+
1. Fork 本仓库
|
|
309
|
+
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
|
|
310
|
+
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
|
|
311
|
+
4. 推送到分支 (`git push origin feature/AmazingFeature`)
|
|
312
|
+
5. 开启 Pull Request
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
## 📄 许可证
|
|
317
|
+
|
|
318
|
+
本项目采用 MIT 许可证,代码完全开放,您可以在商业项目中自由使用、修改和分发,只需保留原始版权声明。
|
|
319
|
+
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
## 🙏 致谢
|
|
323
|
+
|
|
324
|
+
- [PySide2](https://wiki.qt.io/Qt_for_Python) - Qt for Python
|
|
325
|
+
- [Arco Design](https://arco.design/) - 设计灵感来源
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
## 📮 联系方式
|
|
330
|
+
|
|
331
|
+
- 项目主页:[https://github.com/yourusername/xsideui](https://github.com/yourusername/xsideui)
|
|
332
|
+
- 问题反馈:[Issues](https://github.com/yourusername/xsideui/issues)
|
|
333
|
+
- 邮箱:<your.email@example.com>
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
<div align="center">
|
|
338
|
+
|
|
339
|
+
**如果这个项目对你有帮助,请给个 ⭐️ Star 支持一下!**
|
|
340
|
+
|
|
341
|
+
Made with ❤️ by XSideUI Team
|
|
342
|
+
|
|
343
|
+
</div>
|
xsideui-0.9.1/README.md
ADDED
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
# XSideUI
|
|
2
|
+
|
|
3
|
+
<div align="center">
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+

|
|
7
|
+

|
|
8
|
+

|
|
9
|
+
|
|
10
|
+
**一款现代化的 Python Qt UI 组件库(PySide2 / PySide6)**
|
|
11
|
+
|
|
12
|
+
[快速开始](#快速开始) • [组件文档](#组件列表) • [主题系统](#主题系统) • [示例代码](#使用示例)
|
|
13
|
+
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## ✨ 特性
|
|
19
|
+
|
|
20
|
+
### 🎯 框架兼容
|
|
21
|
+
|
|
22
|
+
- **零成本接入 PySide2/PySide6** – 深度适配 Qt 生态,一套代码无缝切换双版本,告别兼容性困扰
|
|
23
|
+
- **跨平台通用** – Windows、Linux、macOS 全平台支持,构建一致体验
|
|
24
|
+
|
|
25
|
+
### ⚡️ 性能体验
|
|
26
|
+
|
|
27
|
+
- **极致轻量** – 核心库零外部依赖,体积小巧,秒级加载不拖沓
|
|
28
|
+
- **智能渲染引擎** – 内置缓存优化机制,界面流畅丝滑,告别卡顿
|
|
29
|
+
|
|
30
|
+
### 🎨 视觉设计
|
|
31
|
+
|
|
32
|
+
- **现代美学体系** – 精雕细琢的视觉语言,从色彩到动效,尽显专业质感
|
|
33
|
+
- **全局视觉统一** – 颜色、字体、间距、圆角遵循 Qt 设计规范,界面浑然一体
|
|
34
|
+
- **智能主题引擎** – 明暗主题一键切换,支持动态配色,适配不同场景需求
|
|
35
|
+
|
|
36
|
+
### 🧩 组件生态
|
|
37
|
+
|
|
38
|
+
- **30+ 开箱组件** – 按钮、卡片、对话框、菜单等高频组件全覆盖
|
|
39
|
+
- **命名零门槛** – XPushButton、XComboBox 与 Qt 原生命名保持一致,零学习成本上手
|
|
40
|
+
- **图标引擎内置** – SVG 图标动态着色,明暗主题自适应,图标管理从未如此简单
|
|
41
|
+
|
|
42
|
+
### 🔧 定制能力
|
|
43
|
+
|
|
44
|
+
- **链式调用 API** – 灵活优雅的定制方式,一行代码完成样式配置
|
|
45
|
+
- **深度定制支持** – 从基础属性到复杂交互,满足各类定制需求
|
|
46
|
+
|
|
47
|
+
### 📖 开发者友好
|
|
48
|
+
|
|
49
|
+
- **中文优先** – 完整的中文文档 + 代码注释,扫清语言障碍
|
|
50
|
+
- **示例即用** – 配套丰富的示例工程,复制粘贴即可运行,快速验证效果
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
## ✨ 样式展示
|
|
55
|
+
|
|
56
|
+

|
|
57
|
+
|
|
58
|
+
## 📦 安装
|
|
59
|
+
|
|
60
|
+
```python
|
|
61
|
+
pip install xsideui
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 🚀 快速开始
|
|
67
|
+
|
|
68
|
+
### 基础示例
|
|
69
|
+
|
|
70
|
+
```python
|
|
71
|
+
from PySide2.QtWidgets import QApplication
|
|
72
|
+
from xsideui import XPushButton, XColor, XButtonVariant
|
|
73
|
+
|
|
74
|
+
app = QApplication([])
|
|
75
|
+
|
|
76
|
+
# 创建按钮
|
|
77
|
+
button = XPushButton("点击我", color=XColor.PRIMARY, variant=XButtonVariant.SOLID)
|
|
78
|
+
button.show()
|
|
79
|
+
|
|
80
|
+
app.exec_()
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### 主题切换
|
|
84
|
+
|
|
85
|
+
```python
|
|
86
|
+
from xsideui import theme_manager
|
|
87
|
+
|
|
88
|
+
# 切换到暗色主题
|
|
89
|
+
theme_manager.set_theme("dark")
|
|
90
|
+
|
|
91
|
+
# 明暗切换
|
|
92
|
+
theme_manager.toggle_theme()
|
|
93
|
+
|
|
94
|
+
# 自定义主题色
|
|
95
|
+
theme_manager.set_primary_colors({
|
|
96
|
+
"light": "#ab7ae0",
|
|
97
|
+
"dark": "#51258f"
|
|
98
|
+
})
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## 🎨 主题系统
|
|
104
|
+
|
|
105
|
+
XSideUI 提供强大的主题管理系统,支持:
|
|
106
|
+
|
|
107
|
+
- ✅ **明暗主题切换** - 一键切换亮色/暗色模式
|
|
108
|
+
- ✅ **自定义主题色** - 灵活配置主题颜色
|
|
109
|
+
- ✅ **主题预加载** - 快速切换,无延迟
|
|
110
|
+
- ✅ **智能缓存** - 优化性能,减少重复计算
|
|
111
|
+
|
|
112
|
+
### 主题颜色
|
|
113
|
+
|
|
114
|
+
| 颜色 | 说明 |
|
|
115
|
+
|------|------|
|
|
116
|
+
| `primary` | 主题色 |
|
|
117
|
+
| `secondary` | 次要色 |
|
|
118
|
+
| `success` | 成功色 |
|
|
119
|
+
| `warning` | 警告色 |
|
|
120
|
+
| `danger` | 危险色 |
|
|
121
|
+
| `tertiary` | 浅色 |
|
|
122
|
+
|
|
123
|
+
详细主题文档:[Theme.md](docs/Theme.md)
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## 📚 组件列表
|
|
128
|
+
|
|
129
|
+
### 基础组件
|
|
130
|
+
|
|
131
|
+
| 组件 | 说明 | 文档 |
|
|
132
|
+
|------|------|------|
|
|
133
|
+
| [XPushButton](docs/XPushButton.md) | 按钮组件 | 📖 |
|
|
134
|
+
| [XLabel](docs/XLabel.md) | 标签组件 | 📖 |
|
|
135
|
+
| [XIcon](docs/XIcon.md) | 图标组件 | 📖 |
|
|
136
|
+
| [XBadge](docs/XBadge.md) | 徽章组件 | 📖 |
|
|
137
|
+
| [XDivider](docs/XDivider.md) | 分隔线组件 | 📖 |
|
|
138
|
+
|
|
139
|
+
### 表单组件
|
|
140
|
+
|
|
141
|
+
| 组件 | 说明 | 文档 |
|
|
142
|
+
|------|------|------|
|
|
143
|
+
| [XLineEdit](docs/XLineEdit.md) | 单行输入框 | 📖 |
|
|
144
|
+
| [XTextEdit](docs/XTextEdit.md) | 多行文本框 | 📖 |
|
|
145
|
+
| [XSpinBox](docs/XSpinBox.md) | 数字输入框 | 📖 |
|
|
146
|
+
| [XComboBox](docs/XComboBox.md) | 下拉选择框 | 📖 |
|
|
147
|
+
| [XCheckBox](docs/XCheckBox.md) | 复选框 | 📖 |
|
|
148
|
+
| [XRadioButton](docs/XRadioButton.md) | 单选按钮 | 📖 |
|
|
149
|
+
| [XSwitch](docs/XSwitch.md) | 开关组件 | 📖 |
|
|
150
|
+
| [XSlider](docs/XSlider.md) | 滑块组件 | 📖 |
|
|
151
|
+
| [XQDateEdit](docs/XQDateEdit.md) | 日期选择器 | 📖 |
|
|
152
|
+
| [XQTimeEdit](docs/XQTimeEdit.md) | 时间选择器 | 📖 |
|
|
153
|
+
| [XQDateTimeEdit](docs/XQDateTimeEdit.md) | 日期时间选择器 | 📖 |
|
|
154
|
+
|
|
155
|
+
### 数据展示
|
|
156
|
+
|
|
157
|
+
| 组件 | 说明 | 文档 |
|
|
158
|
+
|------|------|------|
|
|
159
|
+
| [XTableWidget](docs/XTableWidget.md) | 表格组件 | 📖 |
|
|
160
|
+
| [XListWidget](docs/XListWidget.md) | 列表组件 | 📖 |
|
|
161
|
+
| [XTreeWidget](docs/XTreeWidget.md) | 树形组件 | 📖 |
|
|
162
|
+
| [XCard](docs/XCard.md) | 卡片组件 | 📖 |
|
|
163
|
+
| [XGroupBox](docs/XGroupBox.md) | 分组框组件 | 📖 |
|
|
164
|
+
| [XImage](docs/XImage.md) | 图片组件 | 📖 |
|
|
165
|
+
| [XCodeBlock](docs/XCodeBlock.md) | 代码块组件 | 📖 |
|
|
166
|
+
|
|
167
|
+
### 导航组件
|
|
168
|
+
|
|
169
|
+
| 组件 | 说明 | 文档 |
|
|
170
|
+
|------|------|------|
|
|
171
|
+
| [XTabWidget](docs/XTabWidget.md) | 标签页组件 | 📖 |
|
|
172
|
+
| [XNavSimple](docs/XNavSimple.md) | 简单导航 | 📖 |
|
|
173
|
+
| [XNavTree](docs/XNavTree.md) | 树形导航 | 📖 |
|
|
174
|
+
| [XPagination](docs/XPagination.md) | 分页组件 | 📖 |
|
|
175
|
+
| [XMenu](docs/XMenu.md) | 菜单组件 | 📖 |
|
|
176
|
+
| [XPopover](docs/XPopover.md) | 气泡组件 | 📖 |
|
|
177
|
+
|
|
178
|
+
### 反馈组件
|
|
179
|
+
|
|
180
|
+
| 组件 | 说明 | 文档 |
|
|
181
|
+
|------|------|------|
|
|
182
|
+
| [XMessageBox](docs/XMessageBox.md) | 消息对话框 | 📖 |
|
|
183
|
+
| [XNotif](docs/XNotif.md) | 通知组件 | 📖 |
|
|
184
|
+
| [XProgressBar](docs/XProgressBar.md) | 进度条组件 | 📖 |
|
|
185
|
+
| [XLoadingMask](docs/XLoadingMask.md) | 加载遮罩 | 📖 |
|
|
186
|
+
|
|
187
|
+
### 布局组件
|
|
188
|
+
|
|
189
|
+
| 组件 | 说明 | 文档 |
|
|
190
|
+
|------|------|------|
|
|
191
|
+
| [XWidget](docs/XWidget.md) | 容器组件 | 📖 |
|
|
192
|
+
| [XScrollArea](docs/XScrollArea.md) | 滚动区域 | 📖 |
|
|
193
|
+
| [XCollapse](docs/XCollapse.md) | 折叠面板 | 📖 |
|
|
194
|
+
| [XCarousel](docs/XCarousel.md) | 轮播组件 | 📖 |
|
|
195
|
+
|
|
196
|
+
### 其他组件
|
|
197
|
+
|
|
198
|
+
| 组件 | 说明 | 文档 |
|
|
199
|
+
|------|------|------|
|
|
200
|
+
| [XTitleBar](docs/XTitleBar.md) | 标题栏组件 | 📖 |
|
|
201
|
+
| [XUpload](docs/XUpload.md) | 上传组件 | 📖 |
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## 💡 使用示例
|
|
206
|
+
|
|
207
|
+
### 按钮组件
|
|
208
|
+
|
|
209
|
+
```python
|
|
210
|
+
from xsideui import XPushButton, XColor, XButtonVariant, XSize
|
|
211
|
+
|
|
212
|
+
# 不同变体
|
|
213
|
+
button1 = XPushButton("实心按钮", variant=XButtonVariant.SOLID, color=XColor.PRIMARY)
|
|
214
|
+
button2 = XPushButton("描边按钮", variant=XButtonVariant.OUTLINED, color=XColor.PRIMARY)
|
|
215
|
+
button3 = XPushButton("文本按钮", variant=XButtonVariant.TEXT, color=XColor.PRIMARY)
|
|
216
|
+
|
|
217
|
+
# 带图标
|
|
218
|
+
button4 = XPushButton("提交", icon="check", color=XColor.SUCCESS)
|
|
219
|
+
|
|
220
|
+
# Loading 状态
|
|
221
|
+
button5 = XPushButton("保存")
|
|
222
|
+
button5.set_loading(True)
|
|
223
|
+
|
|
224
|
+
# 链式调用
|
|
225
|
+
button6 = XPushButton("按钮") \
|
|
226
|
+
.set_variant(XButtonVariant.FILLED) \
|
|
227
|
+
.set_color(XColor.WARNING) \
|
|
228
|
+
.set_size(XSize.LARGE)
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### 卡片组件
|
|
232
|
+
|
|
233
|
+
```python
|
|
234
|
+
from xsideui import XCard, XHeaderCard, XGroupCard, XLabel
|
|
235
|
+
|
|
236
|
+
# 基础卡片
|
|
237
|
+
card1 = XCard()
|
|
238
|
+
card1.addWidget(XLabel("卡片内容"))
|
|
239
|
+
|
|
240
|
+
# 标题卡片
|
|
241
|
+
card2 = XHeaderCard(title="设置")
|
|
242
|
+
card2.addWidget(XLabel("内容"))
|
|
243
|
+
|
|
244
|
+
# 分组卡片
|
|
245
|
+
card3 = XGroupCard(title="配置")
|
|
246
|
+
card3.add_group().add(XLabel("分组1"))
|
|
247
|
+
card3.add_group().add(XLabel("分组2"))
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### 表格组件
|
|
251
|
+
|
|
252
|
+
```python
|
|
253
|
+
from xsideui import XTableWidget
|
|
254
|
+
|
|
255
|
+
table = XTableWidget()
|
|
256
|
+
table.set_headers(["姓名", "年龄", "城市"])
|
|
257
|
+
table.add_row(["张三", 25, "北京"])
|
|
258
|
+
table.add_row(["李四", 30, "上海"])
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### 导航组件
|
|
262
|
+
|
|
263
|
+
```python
|
|
264
|
+
from xsideui import XTabWidget
|
|
265
|
+
|
|
266
|
+
tabs = XTabWidget()
|
|
267
|
+
tabs.add_tab("标签1", XLabel("内容1"))
|
|
268
|
+
tabs.add_tab("标签2", XLabel("内容2"))
|
|
269
|
+
tabs.add_tab("标签3", XLabel("内容3"))
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## 🏗️ 项目结构
|
|
275
|
+
|
|
276
|
+
```
|
|
277
|
+
xsideui/
|
|
278
|
+
├── docs/ # 组件文档
|
|
279
|
+
├── src/
|
|
280
|
+
│ └── xsideui/
|
|
281
|
+
│ ├── widgets/ # UI 组件
|
|
282
|
+
│ ├── theme/ # 主题系统
|
|
283
|
+
│ ├── icon/ # 图标引擎
|
|
284
|
+
│ ├── xenum/ # 枚举定义
|
|
285
|
+
│ └── utils/ # 工具函数
|
|
286
|
+
└── examples/ # 示例代码
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## 🤝 贡献
|
|
292
|
+
|
|
293
|
+
欢迎贡献代码、报告问题或提出建议!
|
|
294
|
+
|
|
295
|
+
1. Fork 本仓库
|
|
296
|
+
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
|
|
297
|
+
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
|
|
298
|
+
4. 推送到分支 (`git push origin feature/AmazingFeature`)
|
|
299
|
+
5. 开启 Pull Request
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## 📄 许可证
|
|
304
|
+
|
|
305
|
+
本项目采用 MIT 许可证,代码完全开放,您可以在商业项目中自由使用、修改和分发,只需保留原始版权声明。
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
## 🙏 致谢
|
|
310
|
+
|
|
311
|
+
- [PySide2](https://wiki.qt.io/Qt_for_Python) - Qt for Python
|
|
312
|
+
- [Arco Design](https://arco.design/) - 设计灵感来源
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
## 📮 联系方式
|
|
317
|
+
|
|
318
|
+
- 项目主页:[https://github.com/yourusername/xsideui](https://github.com/yourusername/xsideui)
|
|
319
|
+
- 问题反馈:[Issues](https://github.com/yourusername/xsideui/issues)
|
|
320
|
+
- 邮箱:<your.email@example.com>
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
<div align="center">
|
|
325
|
+
|
|
326
|
+
**如果这个项目对你有帮助,请给个 ⭐️ Star 支持一下!**
|
|
327
|
+
|
|
328
|
+
Made with ❤️ by XSideUI Team
|
|
329
|
+
|
|
330
|
+
</div>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "xsideui"
|
|
7
|
+
dynamic = ["version"]
|
|
8
|
+
description = "A modern PySide2 / PySide6 component library with rich UI components and theme support"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
authors = [{ name = "heng zhi qi", email = "efupay@foxmail.com" }]
|
|
11
|
+
license = { file = "LICENSE" }
|
|
12
|
+
requires-python = ">=3.6"
|
|
13
|
+
|
|
14
|
+
[project.urls]
|
|
15
|
+
Homepage = "https://github.com/yourusername/xsideui"
|
|
16
|
+
Documentation = "https://github.com/yourusername/xsideui#readme"
|
|
17
|
+
Repository = "https://github.com/yourusername/xsideui.git"
|
|
18
|
+
|
|
19
|
+
[tool.setuptools]
|
|
20
|
+
package-dir = {"" = "src"}
|
xsideui-0.9.1/setup.cfg
ADDED