Metadata-Version: 2.4
Name: tkzcharts
Version: 0.1.0
Summary: A lightweight tkinter chart component library (line, bar, pie, scatter).
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/zouyujiang/tkzcharts
Project-URL: Repository, https://github.com/zouyujiang/tkzcharts
Project-URL: Issues, https://github.com/zouyujiang/tkzcharts/issues
Keywords: tkinter,chart,plot,graph,gui,visualization
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Multimedia :: Graphics
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# tkzcharts

一个轻量的 **tkinter 图表组件库**，无需任何第三方依赖，用纯标准库绘制图表。
内置：折线图、柱状图、饼图 / 环形图、散点图，且支持**平移缩放交互**。

## 特性

- 零第三方依赖，仅使用 Python 标准库中的 `tkinter`
- 图表组件即 Tk widget，可直接 `pack` / `grid` 到任意界面
- 交互：左键拖拽平移、滚轮缩放、双击复位
- 多系列支持，内置统一配色 `PALETTE`

## 安装

```bash
pip install tkzcharts
```

## 快速开始

```python
import tkinter as tk
from tkinter import ttk
from tkzcharts import LineChart, BarChart, PieChart, ScatterChart, enable_dpi_awareness

enable_dpi_awareness()  # 高 DPI 屏幕需在创建窗口前调用

root = tk.Tk()
root.title("tkzcharts 示例")

frame = ttk.Frame(root, padding=12)
frame.pack(fill="both", expand=True)

# 折线图
line = LineChart(frame)
line.pack(fill="both", expand=True)
line.set_title("月度销售趋势")
line.set_axis_labels("月份", "销售额（万元）")
line.add_series([1, 2, 3, 4], [12, 19, 14, 26], name="2025 年")
line.add_series([1, 2, 3, 4], [8, 11, 18, 15], name="2026 年")

# 柱状图（多系列并排）
bar = BarChart(frame)
bar.pack(fill="both", expand=True)
bar.set_data(["Q1", "Q2", "Q3"], [[86, 120, 105], [60, 98, 77]], names=["2025 年", "2026 年"])

# 饼图
pie = PieChart(frame)
pie.pack(fill="both", expand=True)
pie.set_data(["手机", "电脑", "平板"], [42, 28, 15])

# 散点图
scatter = ScatterChart(frame)
scatter.pack(fill="both", expand=True)
scatter.add_series([168, 175, 182], [62, 70, 78], name="男")

root.mainloop()
```

## 公开接口

| 名称 | 说明 |
| --- | --- |
| `LineChart` | 多系列折线 / 趋势图 |
| `BarChart` | 竖直柱状图（分类标签） |
| `PieChart` | 饼状图 / 环形图 |
| `ScatterChart` | 多系列散点图 |
| `BaseChart` | 自定义图表基类 |
| `PALETTE` | 默认系列配色 |
| `nice_ticks` | 刻度生成工具 |
| `enable_dpi_awareness` | 启用 Windows 系统 DPI 感知（创建窗口前调用） |

## 运行演示

```bash
python demo.py
```

## 许可证

[Apache License 2.0](LICENSE)
