Metadata-Version: 2.4
Name: rouwan-gui
Version: 0.2.2
Summary: 这是一个Python的GUI库。
Author-email: 肥美入类 <ydx20140606@qq.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/you/pygui
Project-URL: Repository, https://github.com/you/pygui
Keywords: gui,demo
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: pyglet>=2.0
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: build; extra == "dev"

# rouwan-gui

一个基于 [pyglet](https://pyglet.org/) 的轻量级 Python GUI 库。

## 简介

`rouwan-gui` 提供窗口、按钮、输入框、文本、容器、表格等常用控件，采用固定的逻辑坐标系，纯 Python 实现，跨平台运行。

## 坐标约定

- 逻辑分辨率固定为 `1920 x 1080`
- 屏幕中心为 `(0, 0)`
- 横向范围 `-960 ~ +960`，纵向范围 `-540 ~ +540`
- 右上为正方向，左下为负方向
- **所有控件以自身中心点作为位置参考点**

实际像素位置会按窗口真实尺寸自动换算，无需手动处理。

## 安装

从 whl 安装：

```bash
pip install E:\PycharmProject\rouwan_gui-0.2.2-py3-none-any.whl
```

从源码可编辑安装（开发用）：

```bash
cd PyUI
pip install -e .
```

依赖 `pyglet`，安装时会自动拉取。

## 快速开始

```python
import rouwan_gui as rwg


def update(window, dt):
    """每帧调用一次。"""
    pass


# 创建窗口：宽、高、标题、帧率、每帧回调
win = rwg.Window(800, 600, "我的应用", 60, update)

# 创建按钮：名称, x, y, 宽, 高, 文本, 窗口, 颜色, 回调, 字号
rwg.create_Button(
    "btn1", 0, 0, 200, 60, "点我", win, (0, 255, 0, 255),
    command=lambda: print("clicked"),
)

# 创建输入框：名称, x, y, 宽, 高, 窗口, 颜色, 初始文本, 字号
rwg.create_Entry(
    "input1", 0, -100, 300, 40, win, (60, 60, 60, 255),
)

# 创建文本：名称, x, y, 文本, 窗口, 字号
rwg.create_Text("title", 0, 200, "标题", win, font_size=24)

# 启动主循环
win.run()
```

## API

### Window

```python
Window(width, height, name, fps, update_command)
```

| 参数 | 说明 |
|------|------|
| `width` / `height` | 窗口像素尺寸 |
| `name` | 窗口标题 |
| `fps` | 每帧更新频率 |
| `update_command` | 每帧回调，签名 `func(window, dt)` |

内部状态：

- `role_dict`：所有控件，按名字索引
- `last_text` / `last_key` / `last_mouse`：当前帧输入状态

方法：

- `run()`：启动主循环

### Button

```python
create_Button(name, x, y, width, height, text, window, color,
              command=None, font_size=1)
```

| 参数 | 说明 |
|------|------|
| `name` | 控件名，用于 `role_dict` 索引 |
| `x`, `y` | 中心点逻辑坐标 |
| `width`, `height` | 逻辑尺寸 |
| `text` | 按钮文字 |
| `window` | 所属窗口 |
| `color` | 背景色 `(r, g, b, a)`，取值 `0~255` |
| `command` | 点击回调，无参函数 |
| `font_size` | 字号 |

### Entry

```python
create_Entry(name, x, y, width, height, window, color,
             init_text="", font_size=1)
```

点击切换输入状态，回车结束输入，退格删除字符。当前内容存于 `entry.result`。

### Text

```python
create_Text(name, x, y, text, window, font_size=1)
```

显示文本，使用内置字体 `STSONG.TTF`，居中锚点。

### Frame

```python
create_Frame(name, x, y, width, height, window, color)
```

纯色矩形区域。

### Table

```python
create_Table(name, x, y, width, height, text, window,
             frame_color=Color_V, font_size=1)
```

带背景的文字块。`Color_V` 默认为不透明白 `(255, 255, 255, 255)`。

## 颜色

所有颜色均为 `(R, G, B, A)` 四元组，取值范围 `0 ~ 255`。

- `A = 0`：完全透明
- `A = 255`：完全不透明

示例：

```python
(255, 0, 0, 255)      # 不透明红
(0, 255, 0, 128)      # 半透明绿
(0, 0, 0, 0)          # 全透明
```

`rouwan_gui.Color_V` 是默认颜色常量。

## 项目结构

```
PyUI/
├── src/
│   └── rouwan_gui/
│       ├── __init__.py
│       ├── Window.py
│       ├── Frame.py
│       ├── Button.py
│       ├── Entry.py
│       ├── Text.py
│       ├── Table.py
│       └── STSONG.TTF
├── tests/
├── pyproject.toml
└── README.md
```

## 开发

安装开发依赖：

```bash
pip install -e ".[dev]"
```

运行测试：

```bash
python -m pytest
```

打包：

```bash
python -m build
```

生成的文件位于 `dist/` 目录下。

## 字体说明

本库自带 `STSONG.TTF` 字体文件，随代码一起打包。若需替换字体，修改 `Text.py` 中的 `FONT` 常量即可。

## 版本历史

- **0.2.2** — 当前版本，修复各种bug，统一风格
- **0.2.1** — 修复打包时文件名改动的遗留问题
- **0.2.0** — 首个可打包版本

## License

MIT
