Metadata-Version: 2.4
Name: tui-pyqt
Version: 0.1.0
Summary: PyQt自定义控件库 - 现代化UI组件集合
License: MIT
Project-URL: Homepage, https://github.com/yourusername/tui-pyqt
Project-URL: Issues, https://github.com/yourusername/tui-pyqt/issues
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: User Interfaces
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: PyQt5>=5.15.0
Requires-Dist: PyQt6>=6.0.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: black>=22.0.0; extra == "dev"

# TUI.PYQT

一个基于 PyQt6 的自定义控件库，参考 TUI.WPF 设计实现。

## 项目结构

```
TUI.PYQT/
├── src/
│   └── tui_pyqt/
│       ├── __init__.py
│       └── components/
│           ├── __init__.py
│           └── tui_button.py
├── tests/
│   ├── test_tui_button.py
│   └── demo.py
├── requirements.txt
└── README.md
```

## 安装

### 依赖要求

- Python 3.8+
- PyQt6

### 安装依赖

```bash
pip install -r requirements.txt
```

### 使用方式

在 TUI.Pyqt 文件夹下的任何文件中，可以直接引用：

```python
import sys
import os

# 添加src目录到路径
current_dir = os.path.dirname(os.path.abspath(__file__))
src_dir = os.path.join(current_dir, 'src')
sys.path.insert(0, src_dir)

from tui_pyqt import TUIButton, ButtonType, ButtonSize

# 使用
btn = TUIButton("测试", button_type=ButtonType.PRIMARY)
```

## 快速开始

### 基本使用

```python
from PyQt6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget
from tui_pyqt.components import TUIButton, ButtonType, ButtonSize

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("TUIButton 示例")
        
        central_widget = QWidget()
        layout = QVBoxLayout(central_widget)
        
        # 创建主按钮
        primary_btn = TUIButton("主按钮", button_type=ButtonType.PRIMARY)
        layout.addWidget(primary_btn)
        
        # 创建成功按钮
        success_btn = TUIButton("成功", button_type=ButtonType.SUCCESS)
        layout.addWidget(success_btn)
        
        # 创建轮廓按钮
        outlined_btn = TUIButton("轮廓按钮", 
                                button_type=ButtonType.PRIMARY, 
                                is_outlined=True)
        layout.addWidget(outlined_btn)
        
        self.setCentralWidget(central_widget)

if __name__ == '__main__':
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec()
```

## TUIButton 组件

### 功能特性

- ✅ 多种按钮类型：Primary, Secondary, Success, Danger, Warning, Info, Light, Dark
- ✅ 多种按钮尺寸：Small, Medium, Large
- ✅ 轮廓样式（Outlined）
- ✅ 圆角样式（Round）
- ✅ 加载状态（Loading）
- ✅ 前缀和后缀图标支持
- ✅ 垂直布局支持
- ✅ 幽灵样式（Ghost）
- ✅ 自定义圆角半径

### API 文档

#### 构造函数参数

```python
TUIButton(
    text: str = "",                                    # 按钮文本
    parent: Optional[QWidget] = None,                  # 父组件
    button_type: ButtonType = ButtonType.PRIMARY,      # 按钮类型
    button_size: ButtonSize = ButtonSize.MEDIUM,       # 按钮尺寸
    is_outlined: bool = False,                         # 是否为轮廓样式
    is_round: bool = False,                            # 是否为圆角样式
    is_loading: bool = False,                          # 是否处于加载状态
    is_vertical_layout: bool = False,                  # 是否为垂直布局
    is_ghost: bool = False,                            # 是否为幽灵样式
    prefix_icon: Optional[str] = None,                 # 前缀图标
    suffix_icon: Optional[str] = None,                 # 后缀图标
    corner_radius: int = 6                             # 圆角半径
)
```

#### 属性

所有构造函数参数都可以通过属性访问和设置：

```python
button.button_type = ButtonType.SUCCESS
button.button_size = ButtonSize.LARGE
button.is_outlined = True
button.is_round = True
button.is_loading = True
button.prefix_icon = "🚀"
button.suffix_icon = "✓"
```

### 使用示例

#### 1. 基本按钮类型

```python
from tui_pyqt.components import TUIButton, ButtonType

primary_btn = TUIButton("主按钮", button_type=ButtonType.PRIMARY)
success_btn = TUIButton("成功", button_type=ButtonType.SUCCESS)
danger_btn = TUIButton("危险", button_type=ButtonType.DANGER)
```

#### 2. 不同尺寸

```python
from tui_pyqt.components import TUIButton, ButtonSize

small_btn = TUIButton("小按钮", button_size=ButtonSize.SMALL)
medium_btn = TUIButton("中等按钮", button_size=ButtonSize.MEDIUM)
large_btn = TUIButton("大按钮", button_size=ButtonSize.LARGE)
```

#### 3. 轮廓样式

```python
outlined_btn = TUIButton("轮廓按钮", 
                        button_type=ButtonType.PRIMARY, 
                        is_outlined=True)
```

#### 4. 圆角样式

```python
round_btn = TUIButton("圆角按钮", 
                     button_type=ButtonType.PRIMARY, 
                     is_round=True)
```

#### 5. 加载状态

```python
loading_btn = TUIButton("点击加载", button_type=ButtonType.PRIMARY)

def on_click():
    loading_btn.is_loading = True
    # 执行异步操作...
    # 操作完成后: loading_btn.is_loading = False

loading_btn.clicked.connect(on_click)
```

#### 6. 图标支持

```python
# 前缀图标
save_btn = TUIButton("保存", prefix_icon="💾")

# 后缀图标
delete_btn = TUIButton("删除", suffix_icon="🗑️")

# 前后缀图标
search_btn = TUIButton("搜索", prefix_icon="🔍", suffix_icon="→")
```

#### 7. 幽灵样式

```python
ghost_btn = TUIButton("幽灵按钮", 
                     button_type=ButtonType.PRIMARY, 
                     is_ghost=True)
```

#### 8. 组合样式

```python
custom_btn = TUIButton(
    "自定义按钮",
    button_type=ButtonType.SUCCESS,
    button_size=ButtonSize.LARGE,
    is_outlined=True,
    is_round=True,
    prefix_icon="⭐"
)
```

## 运行测试

### 单元测试

```bash
cd tests
python test_tui_button.py
```

### 演示程序

```bash
cd tests
python demo.py
```

演示程序会展示所有 TUIButton 的功能和样式。

## 参考

本项目参考了 [TUI.WPF](https://github.com/your-repo/TUI.WPF) 的设计和实现。

## 许可证

MIT License

## 贡献

欢迎提交 Issue 和 Pull Request！

