TkEasyGo


NameTkEasyGo JSON
Version 0.3.0 PyPI version JSON
download
home_pagehttps://github.com/TkEasyGo/TkEasyGo
SummaryA simple cross-platform GUI generator.
upload_time2024-09-03 02:16:46
maintainerNone
docs_urlNone
authorTkEasyGo
requires_python>=3.7
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            
# TkEasyGo

**TkEasyGo** 是一个简单的跨平台 GUI 生成器,旨在帮助开发者快速创建基本的图形用户界面。它基于 `tkinter` 实现,并提供了一系列基本控件和功能,使用户能够轻松构建简单的应用界面。

[English](README_EN.md)

## 文件结构

├── docs
│   ├── contact.md                # 联系信息
│   ├── contributing.md           # 贡献指南
│   ├── controls.md               # 控件使用指南
│   ├── docs.md                   # 项目文档概述
│   ├── event_binding.md          # 事件绑定的详细说明
│   ├── faq.md                    # 常见问题解答
│   ├── getting_started.md        # 快速入门指南
│   ├── installation.md           # 安装指南
│   ├── license.md                # 许可证详细信息
│   ├── README.md                 # 文档首页
│   ├── styling.md                # 样式和主题设置指南
│   └── window_operations.md      # 窗口操作指南
├── examples
│   ├── Combobox_app.py           # 示例:展示如何使用下拉框控件(Combobox)
│   ├── event_app.py              # 示例:演示如何处理事件
│   ├── label_app.py              # 示例:展示如何使用标签控件(Label)
│   ├── layout_app.py             # 示例:展示如何使用不同的布局管理功能
│   ├── notebook_Slider_app.py    # 示例:展示如何使用选项卡控件(Notebook)和滑块控件(Slider)
│   ├── paned_window_test.py      # 示例:展示如何使用 PanedWindow 控件
│   ├── Progressbar_app.py        # 示例:展示如何使用进度条控件(Progressbar)
│   ├── scrollbar_test.py         # 示例:展示如何使用滚动条控件(Scrollbar)
│   ├── separator_test.py         # 示例:展示如何使用分隔符控件(Separator)
│   ├── spinbox_test.py           # 示例:展示如何使用数字输入框控件(Spinbox)
│   ├── tabbed_app.py             # 示例:展示如何使用选项卡(Tabbed)控件
│   |── treeview_test.py          # 示例:展示如何使用树视图控件(Treeview)
|   └── test_components.py        # 示例:日历控件、颜色选择器、文件选择器、警告框等
├── LICENSE                       # 项目许可证文件,详细信息请参见
├── README.md                     # 项目说明文件
├── setup.py                      # 安装脚本,包含库的依赖和安装设置
├── test.ipynb                    # 测试和实验的 Jupyter Notebook 文件
├── tests
│   └── test_core.py              # 用于测试核心功能的测试文件
└── TkEasyGo
    ├── core.py                   # 核心实现文件,定义主要的控件和窗口管理功能
    ├── events.py                 # 事件处理功能实现
    ├── layout.py                 # 布局管理功能实现
    ├── platform.py               # 平台相关的功能实现
    ├── simple_variable.py        # 简单的变量管理功能
    ├── simple_window.py          # 简单窗口的实现,集成各种控件和布局
    ├── themes.py                 # 主题和样式管理功能实现
    ├── __init__.py               # 库的初始化文件
    |── module                    # 模块文件夹
    └── __pycache__               # 编译的 Python 字节码文件
        ├── core.cpython-310.pyc
        ├── events.cpython-310.pyc
        ├── layout.cpython-310.pyc
        ├── platform.cpython-310.pyc
        ├── simple_variable.cpython-310.pyc
        ├── simple_window.cpython-310.pyc
        └── themes.cpython-310.pyc



## 目前支持的功能

- **标签** (`Label`): 显示静态文本。
- **按钮** (`Button`): 触发事件的按钮。
- **文本框** (`Textbox`): 用于输入和显示文本。
- **复选框** (`Checkbox`): 允许用户选择或取消选择一个选项。
- **单选按钮** (`Radiobutton`): 允许用户在多个选项中选择一个。
- **下拉框** (`Combobox`): 提供一个下拉列表供用户选择。
- **进度条** (`Progressbar`): 显示进度的可视化控件。
- **滑块** (`Slider`): 用于在数值范围内选择值。
- **选项卡** (`Notebook`): 提供多个标签页以组织内容。
- **帧** (`Frame`): 用于组织和分组其他控件。

## 未来计划

- **增强主题支持**: 引入更多的主题和样式选项,以提升界面的美观性和用户体验。
- **增加更多控件**: 如日历控件、图表控件等,以满足更复杂的应用需求。
- **改进布局管理**: 提供更灵活的布局选项,使用户可以更自由地安排控件的位置和大小。
- **提高性能**: 优化控件的性能,确保在大型应用中依然流畅。

## 待办事项

- **用户文档**: 完善用户手册和开发文档,以帮助用户更好地使用库。
- **示例应用**: 提供更多示例应用和教程,以展示库的不同用法和功能。
- **错误修复**: 持续修复已知的 bug 和问题,以提升库的稳定性。
- **社区支持**: 建立社区支持渠道,收集用户反馈并及时响应。

# TkEasyGo 使用教程

**TkEasyGo** 是一个简化的跨平台 GUI 生成器,基于 `tkinter` 实现,旨在帮助开发者快速创建图形用户界面。本文将介绍如何安装和使用 TkEasyGo,展示一些常见的用法示例,并提供一些技巧和注意事项。

## 安装

要安装 TkEasyGo,可以使用 `pip` 从 PyPI 安装:

```sh
pip install TkEasyGo
```

## 快速入门

### 创建一个基本的窗口

下面的示例展示了如何创建一个简单的窗口,并添加一些基本控件:

```python
from TkEasyGo.core import SimpleWindow, SimpleVariable

def basic_app():
    # 创建窗口
    window = SimpleWindow(title="Basic TkEasyGo App", width=300, height=200)
    
    # 添加标签
    window.add_label("Welcome to TkEasyGo!", row=0, column=0, columnspan=2)
    
    # 添加文本框
    textbox = window.add_textbox("Type here...", row=1, column=0, columnspan=2)
    
    # 添加按钮
    button = window.add_button("Submit", lambda: print("Submit clicked"), row=2, column=0, columnspan=2)
    
    # 添加复选框
    checkbox_var = SimpleVariable()
    window.add_checkbox("Check me", checkbox_var, row=3, column=0)
    
    # 运行窗口
    window.run()

if __name__ == "__main__":
    basic_app()
```

### 控件介绍

#### 标签 (`Label`)

用于显示静态文本。可以通过 `add_label` 方法添加。

```python
window.add_label("This is a label", row=0, column=0)
```

#### 按钮 (`Button`)

用于触发事件。可以通过 `add_button` 方法添加。

```python
window.add_button("Click Me", lambda: print("Button clicked"), row=1, column=0)
```

#### 文本框 (`Textbox`)

用于输入和显示文本。可以通过 `add_textbox` 方法添加。

```python
textbox = window.add_textbox("Default text", row=2, column=0)
```

#### 复选框 (`Checkbox`)

允许用户选择或取消选择一个选项。可以通过 `add_checkbox` 方法添加。

```python
checkbox_var = SimpleVariable()
window.add_checkbox("Check me", checkbox_var, row=3, column=0)
```

#### 单选按钮 (`Radiobutton`)

允许用户在多个选项中选择一个。可以通过 `add_radiobutton` 方法添加。

```python
radiobutton_var = SimpleVariable("1")
window.add_radiobutton("Option 1", "1", radiobutton_var, row=4, column=0)
```

#### 下拉框 (`Combobox`)

提供一个下拉列表供用户选择。可以通过 `add_combobox` 方法添加。

```python
combobox = window.add_combobox(["Option 1", "Option 2", "Option 3"], row=5, column=0)
```

#### 进度条 (`Progressbar`)

显示进度的可视化控件。可以通过 `add_progressbar` 方法添加。

```python
progressbar = window.add_progressbar(value=50, row=6, column=0, columnspan=2)
```

#### 滑块 (`Slider`)

用于在数值范围内选择值。可以通过 `add_slider` 方法添加。

```python
slider = window.add_slider(value=50, row=7, column=0, columnspan=2)
```

#### 选项卡 (`Notebook`)

提供多个标签页以组织内容。可以通过 `add_notebook` 方法添加。

```python
def tab1_content(window, frame):
    window.add_label("This is Tab 1", row=0, column=0, frame=frame)
    window.add_button("Button in Tab 1", lambda: print("Tab 1 Button clicked"), row=1, column=0, frame=frame)

def tab2_content(window, frame):
    window.add_label("This is Tab 2", row=0, column=0, frame=frame)
    window.add_button("Button in Tab 2", lambda: print("Tab 2 Button clicked"), row=1, column=0, frame=frame)

window.add_notebook({"Tab 1": tab1_content, "Tab 2": tab2_content}, row=8, column=0, columnspan=2)
```

## 事件绑定

可以通过 `bind_event` 方法为控件绑定事件:

```python
window.bind_event('textbox', '<KeyRelease>', lambda event: print(f"Text changed to: {textbox.get()}"))
window.bind_event('button', '<Button-1>', lambda event: print("

Button clicked"))
```

## 窗口操作

### 设置窗口的最小化、最大化和恢复功能

`SimpleWindow` 提供了窗口操作的方法,包括最小化、最大化和恢复:

- **最大化**: 使用 `maximize()` 方法将窗口切换到全屏模式。
- **最小化**: 使用 `minimize()` 方法将窗口最小化到任务栏。
- **恢复**: 使用 `restore()` 方法将窗口恢复到原始大小。

示例代码如下:

```python
def window_operations_app():
    window = SimpleWindow(title="Window Operations App", width=400, height=300)
    
    # 添加操作按钮
    window.add_button("Maximize", window.maximize, row=0, column=0)
    window.add_button("Minimize", window.minimize, row=1, column=0)
    window.add_button("Restore", window.restore, row=2, column=0)
    
    # 运行窗口
    window.run()

if __name__ == "__main__":
    window_operations_app()
```

## 常见问题

### 如何调整控件的样式?

你可以在 `SimpleWindow` 的 `configure_styles` 方法中配置控件的样式。例如:

```python
window.configure_styles('TButton', padding=6, relief="flat", background="#4CAF50", font=("Arial", 12))
```

### 如何贡献代码?

如果你希望为 TkEasyGo 做出贡献,可以通过 GitHub 提交 Pull Request,或者报告问题和建议。我们欢迎任何形式的贡献。

## 联系我们

- **电子邮件**: tkeasygo@gmail.com
- **GitHub**: [https://github.com/TkEasyGo/TkEasyGo](https://github.com//TkEasyGo)

## 许可证

本项目使用 MIT 许可证,详细信息请参见 [LICENSE](LICENSE) 文件。

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/TkEasyGo/TkEasyGo",
    "name": "TkEasyGo",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": null,
    "author": "TkEasyGo",
    "author_email": "tkeasygo@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/7b/a0/b92dcb7f800cc0c0117723bf45bfc72940995776b122f26210b1e4eadc6a/TkEasyGo-0.3.0.tar.gz",
    "platform": null,
    "description": "\r\n# TkEasyGo\r\n\r\n**TkEasyGo** \u662f\u4e00\u4e2a\u7b80\u5355\u7684\u8de8\u5e73\u53f0 GUI \u751f\u6210\u5668\uff0c\u65e8\u5728\u5e2e\u52a9\u5f00\u53d1\u8005\u5feb\u901f\u521b\u5efa\u57fa\u672c\u7684\u56fe\u5f62\u7528\u6237\u754c\u9762\u3002\u5b83\u57fa\u4e8e `tkinter` \u5b9e\u73b0\uff0c\u5e76\u63d0\u4f9b\u4e86\u4e00\u7cfb\u5217\u57fa\u672c\u63a7\u4ef6\u548c\u529f\u80fd\uff0c\u4f7f\u7528\u6237\u80fd\u591f\u8f7b\u677e\u6784\u5efa\u7b80\u5355\u7684\u5e94\u7528\u754c\u9762\u3002\r\n\r\n[English](README_EN.md)\r\n\r\n## \u6587\u4ef6\u7ed3\u6784\r\n\r\n\u251c\u2500\u2500 docs\r\n\u2502   \u251c\u2500\u2500 contact.md                # \u8054\u7cfb\u4fe1\u606f\r\n\u2502   \u251c\u2500\u2500 contributing.md           # \u8d21\u732e\u6307\u5357\r\n\u2502   \u251c\u2500\u2500 controls.md               # \u63a7\u4ef6\u4f7f\u7528\u6307\u5357\r\n\u2502   \u251c\u2500\u2500 docs.md                   # \u9879\u76ee\u6587\u6863\u6982\u8ff0\r\n\u2502   \u251c\u2500\u2500 event_binding.md          # \u4e8b\u4ef6\u7ed1\u5b9a\u7684\u8be6\u7ec6\u8bf4\u660e\r\n\u2502   \u251c\u2500\u2500 faq.md                    # \u5e38\u89c1\u95ee\u9898\u89e3\u7b54\r\n\u2502   \u251c\u2500\u2500 getting_started.md        # \u5feb\u901f\u5165\u95e8\u6307\u5357\r\n\u2502   \u251c\u2500\u2500 installation.md           # \u5b89\u88c5\u6307\u5357\r\n\u2502   \u251c\u2500\u2500 license.md                # \u8bb8\u53ef\u8bc1\u8be6\u7ec6\u4fe1\u606f\r\n\u2502   \u251c\u2500\u2500 README.md                 # \u6587\u6863\u9996\u9875\r\n\u2502   \u251c\u2500\u2500 styling.md                # \u6837\u5f0f\u548c\u4e3b\u9898\u8bbe\u7f6e\u6307\u5357\r\n\u2502   \u2514\u2500\u2500 window_operations.md      # \u7a97\u53e3\u64cd\u4f5c\u6307\u5357\r\n\u251c\u2500\u2500 examples\r\n\u2502   \u251c\u2500\u2500 Combobox_app.py           # \u793a\u4f8b\uff1a\u5c55\u793a\u5982\u4f55\u4f7f\u7528\u4e0b\u62c9\u6846\u63a7\u4ef6\uff08Combobox\uff09\r\n\u2502   \u251c\u2500\u2500 event_app.py              # \u793a\u4f8b\uff1a\u6f14\u793a\u5982\u4f55\u5904\u7406\u4e8b\u4ef6\r\n\u2502   \u251c\u2500\u2500 label_app.py              # \u793a\u4f8b\uff1a\u5c55\u793a\u5982\u4f55\u4f7f\u7528\u6807\u7b7e\u63a7\u4ef6\uff08Label\uff09\r\n\u2502   \u251c\u2500\u2500 layout_app.py             # \u793a\u4f8b\uff1a\u5c55\u793a\u5982\u4f55\u4f7f\u7528\u4e0d\u540c\u7684\u5e03\u5c40\u7ba1\u7406\u529f\u80fd\r\n\u2502   \u251c\u2500\u2500 notebook_Slider_app.py    # \u793a\u4f8b\uff1a\u5c55\u793a\u5982\u4f55\u4f7f\u7528\u9009\u9879\u5361\u63a7\u4ef6\uff08Notebook\uff09\u548c\u6ed1\u5757\u63a7\u4ef6\uff08Slider\uff09\r\n\u2502   \u251c\u2500\u2500 paned_window_test.py      # \u793a\u4f8b\uff1a\u5c55\u793a\u5982\u4f55\u4f7f\u7528 PanedWindow \u63a7\u4ef6\r\n\u2502   \u251c\u2500\u2500 Progressbar_app.py        # \u793a\u4f8b\uff1a\u5c55\u793a\u5982\u4f55\u4f7f\u7528\u8fdb\u5ea6\u6761\u63a7\u4ef6\uff08Progressbar\uff09\r\n\u2502   \u251c\u2500\u2500 scrollbar_test.py         # \u793a\u4f8b\uff1a\u5c55\u793a\u5982\u4f55\u4f7f\u7528\u6eda\u52a8\u6761\u63a7\u4ef6\uff08Scrollbar\uff09\r\n\u2502   \u251c\u2500\u2500 separator_test.py         # \u793a\u4f8b\uff1a\u5c55\u793a\u5982\u4f55\u4f7f\u7528\u5206\u9694\u7b26\u63a7\u4ef6\uff08Separator\uff09\r\n\u2502   \u251c\u2500\u2500 spinbox_test.py           # \u793a\u4f8b\uff1a\u5c55\u793a\u5982\u4f55\u4f7f\u7528\u6570\u5b57\u8f93\u5165\u6846\u63a7\u4ef6\uff08Spinbox\uff09\r\n\u2502   \u251c\u2500\u2500 tabbed_app.py             # \u793a\u4f8b\uff1a\u5c55\u793a\u5982\u4f55\u4f7f\u7528\u9009\u9879\u5361\uff08Tabbed\uff09\u63a7\u4ef6\r\n\u2502   |\u2500\u2500 treeview_test.py          # \u793a\u4f8b\uff1a\u5c55\u793a\u5982\u4f55\u4f7f\u7528\u6811\u89c6\u56fe\u63a7\u4ef6\uff08Treeview\uff09\r\n|   \u2514\u2500\u2500 test_components.py        # \u793a\u4f8b\uff1a\u65e5\u5386\u63a7\u4ef6\u3001\u989c\u8272\u9009\u62e9\u5668\u3001\u6587\u4ef6\u9009\u62e9\u5668\u3001\u8b66\u544a\u6846\u7b49\r\n\u251c\u2500\u2500 LICENSE                       # \u9879\u76ee\u8bb8\u53ef\u8bc1\u6587\u4ef6\uff0c\u8be6\u7ec6\u4fe1\u606f\u8bf7\u53c2\u89c1\r\n\u251c\u2500\u2500 README.md                     # \u9879\u76ee\u8bf4\u660e\u6587\u4ef6\r\n\u251c\u2500\u2500 setup.py                      # \u5b89\u88c5\u811a\u672c\uff0c\u5305\u542b\u5e93\u7684\u4f9d\u8d56\u548c\u5b89\u88c5\u8bbe\u7f6e\r\n\u251c\u2500\u2500 test.ipynb                    # \u6d4b\u8bd5\u548c\u5b9e\u9a8c\u7684 Jupyter Notebook \u6587\u4ef6\r\n\u251c\u2500\u2500 tests\r\n\u2502   \u2514\u2500\u2500 test_core.py              # \u7528\u4e8e\u6d4b\u8bd5\u6838\u5fc3\u529f\u80fd\u7684\u6d4b\u8bd5\u6587\u4ef6\r\n\u2514\u2500\u2500 TkEasyGo\r\n    \u251c\u2500\u2500 core.py                   # \u6838\u5fc3\u5b9e\u73b0\u6587\u4ef6\uff0c\u5b9a\u4e49\u4e3b\u8981\u7684\u63a7\u4ef6\u548c\u7a97\u53e3\u7ba1\u7406\u529f\u80fd\r\n    \u251c\u2500\u2500 events.py                 # \u4e8b\u4ef6\u5904\u7406\u529f\u80fd\u5b9e\u73b0\r\n    \u251c\u2500\u2500 layout.py                 # \u5e03\u5c40\u7ba1\u7406\u529f\u80fd\u5b9e\u73b0\r\n    \u251c\u2500\u2500 platform.py               # \u5e73\u53f0\u76f8\u5173\u7684\u529f\u80fd\u5b9e\u73b0\r\n    \u251c\u2500\u2500 simple_variable.py        # \u7b80\u5355\u7684\u53d8\u91cf\u7ba1\u7406\u529f\u80fd\r\n    \u251c\u2500\u2500 simple_window.py          # \u7b80\u5355\u7a97\u53e3\u7684\u5b9e\u73b0\uff0c\u96c6\u6210\u5404\u79cd\u63a7\u4ef6\u548c\u5e03\u5c40\r\n    \u251c\u2500\u2500 themes.py                 # \u4e3b\u9898\u548c\u6837\u5f0f\u7ba1\u7406\u529f\u80fd\u5b9e\u73b0\r\n    \u251c\u2500\u2500 __init__.py               # \u5e93\u7684\u521d\u59cb\u5316\u6587\u4ef6\r\n    |\u2500\u2500 module                    # \u6a21\u5757\u6587\u4ef6\u5939\r\n    \u2514\u2500\u2500 __pycache__               # \u7f16\u8bd1\u7684 Python \u5b57\u8282\u7801\u6587\u4ef6\r\n        \u251c\u2500\u2500 core.cpython-310.pyc\r\n        \u251c\u2500\u2500 events.cpython-310.pyc\r\n        \u251c\u2500\u2500 layout.cpython-310.pyc\r\n        \u251c\u2500\u2500 platform.cpython-310.pyc\r\n        \u251c\u2500\u2500 simple_variable.cpython-310.pyc\r\n        \u251c\u2500\u2500 simple_window.cpython-310.pyc\r\n        \u2514\u2500\u2500 themes.cpython-310.pyc\r\n\r\n\r\n\r\n## \u76ee\u524d\u652f\u6301\u7684\u529f\u80fd\r\n\r\n- **\u6807\u7b7e** (`Label`): \u663e\u793a\u9759\u6001\u6587\u672c\u3002\r\n- **\u6309\u94ae** (`Button`): \u89e6\u53d1\u4e8b\u4ef6\u7684\u6309\u94ae\u3002\r\n- **\u6587\u672c\u6846** (`Textbox`): \u7528\u4e8e\u8f93\u5165\u548c\u663e\u793a\u6587\u672c\u3002\r\n- **\u590d\u9009\u6846** (`Checkbox`): \u5141\u8bb8\u7528\u6237\u9009\u62e9\u6216\u53d6\u6d88\u9009\u62e9\u4e00\u4e2a\u9009\u9879\u3002\r\n- **\u5355\u9009\u6309\u94ae** (`Radiobutton`): \u5141\u8bb8\u7528\u6237\u5728\u591a\u4e2a\u9009\u9879\u4e2d\u9009\u62e9\u4e00\u4e2a\u3002\r\n- **\u4e0b\u62c9\u6846** (`Combobox`): \u63d0\u4f9b\u4e00\u4e2a\u4e0b\u62c9\u5217\u8868\u4f9b\u7528\u6237\u9009\u62e9\u3002\r\n- **\u8fdb\u5ea6\u6761** (`Progressbar`): \u663e\u793a\u8fdb\u5ea6\u7684\u53ef\u89c6\u5316\u63a7\u4ef6\u3002\r\n- **\u6ed1\u5757** (`Slider`): \u7528\u4e8e\u5728\u6570\u503c\u8303\u56f4\u5185\u9009\u62e9\u503c\u3002\r\n- **\u9009\u9879\u5361** (`Notebook`): \u63d0\u4f9b\u591a\u4e2a\u6807\u7b7e\u9875\u4ee5\u7ec4\u7ec7\u5185\u5bb9\u3002\r\n- **\u5e27** (`Frame`): \u7528\u4e8e\u7ec4\u7ec7\u548c\u5206\u7ec4\u5176\u4ed6\u63a7\u4ef6\u3002\r\n\r\n## \u672a\u6765\u8ba1\u5212\r\n\r\n- **\u589e\u5f3a\u4e3b\u9898\u652f\u6301**: \u5f15\u5165\u66f4\u591a\u7684\u4e3b\u9898\u548c\u6837\u5f0f\u9009\u9879\uff0c\u4ee5\u63d0\u5347\u754c\u9762\u7684\u7f8e\u89c2\u6027\u548c\u7528\u6237\u4f53\u9a8c\u3002\r\n- **\u589e\u52a0\u66f4\u591a\u63a7\u4ef6**: \u5982\u65e5\u5386\u63a7\u4ef6\u3001\u56fe\u8868\u63a7\u4ef6\u7b49\uff0c\u4ee5\u6ee1\u8db3\u66f4\u590d\u6742\u7684\u5e94\u7528\u9700\u6c42\u3002\r\n- **\u6539\u8fdb\u5e03\u5c40\u7ba1\u7406**: \u63d0\u4f9b\u66f4\u7075\u6d3b\u7684\u5e03\u5c40\u9009\u9879\uff0c\u4f7f\u7528\u6237\u53ef\u4ee5\u66f4\u81ea\u7531\u5730\u5b89\u6392\u63a7\u4ef6\u7684\u4f4d\u7f6e\u548c\u5927\u5c0f\u3002\r\n- **\u63d0\u9ad8\u6027\u80fd**: \u4f18\u5316\u63a7\u4ef6\u7684\u6027\u80fd\uff0c\u786e\u4fdd\u5728\u5927\u578b\u5e94\u7528\u4e2d\u4f9d\u7136\u6d41\u7545\u3002\r\n\r\n## \u5f85\u529e\u4e8b\u9879\r\n\r\n- **\u7528\u6237\u6587\u6863**: \u5b8c\u5584\u7528\u6237\u624b\u518c\u548c\u5f00\u53d1\u6587\u6863\uff0c\u4ee5\u5e2e\u52a9\u7528\u6237\u66f4\u597d\u5730\u4f7f\u7528\u5e93\u3002\r\n- **\u793a\u4f8b\u5e94\u7528**: \u63d0\u4f9b\u66f4\u591a\u793a\u4f8b\u5e94\u7528\u548c\u6559\u7a0b\uff0c\u4ee5\u5c55\u793a\u5e93\u7684\u4e0d\u540c\u7528\u6cd5\u548c\u529f\u80fd\u3002\r\n- **\u9519\u8bef\u4fee\u590d**: \u6301\u7eed\u4fee\u590d\u5df2\u77e5\u7684 bug \u548c\u95ee\u9898\uff0c\u4ee5\u63d0\u5347\u5e93\u7684\u7a33\u5b9a\u6027\u3002\r\n- **\u793e\u533a\u652f\u6301**: \u5efa\u7acb\u793e\u533a\u652f\u6301\u6e20\u9053\uff0c\u6536\u96c6\u7528\u6237\u53cd\u9988\u5e76\u53ca\u65f6\u54cd\u5e94\u3002\r\n\r\n# TkEasyGo \u4f7f\u7528\u6559\u7a0b\r\n\r\n**TkEasyGo** \u662f\u4e00\u4e2a\u7b80\u5316\u7684\u8de8\u5e73\u53f0 GUI \u751f\u6210\u5668\uff0c\u57fa\u4e8e `tkinter` \u5b9e\u73b0\uff0c\u65e8\u5728\u5e2e\u52a9\u5f00\u53d1\u8005\u5feb\u901f\u521b\u5efa\u56fe\u5f62\u7528\u6237\u754c\u9762\u3002\u672c\u6587\u5c06\u4ecb\u7ecd\u5982\u4f55\u5b89\u88c5\u548c\u4f7f\u7528 TkEasyGo\uff0c\u5c55\u793a\u4e00\u4e9b\u5e38\u89c1\u7684\u7528\u6cd5\u793a\u4f8b\uff0c\u5e76\u63d0\u4f9b\u4e00\u4e9b\u6280\u5de7\u548c\u6ce8\u610f\u4e8b\u9879\u3002\r\n\r\n## \u5b89\u88c5\r\n\r\n\u8981\u5b89\u88c5 TkEasyGo\uff0c\u53ef\u4ee5\u4f7f\u7528 `pip` \u4ece PyPI \u5b89\u88c5\uff1a\r\n\r\n```sh\r\npip install TkEasyGo\r\n```\r\n\r\n## \u5feb\u901f\u5165\u95e8\r\n\r\n### \u521b\u5efa\u4e00\u4e2a\u57fa\u672c\u7684\u7a97\u53e3\r\n\r\n\u4e0b\u9762\u7684\u793a\u4f8b\u5c55\u793a\u4e86\u5982\u4f55\u521b\u5efa\u4e00\u4e2a\u7b80\u5355\u7684\u7a97\u53e3\uff0c\u5e76\u6dfb\u52a0\u4e00\u4e9b\u57fa\u672c\u63a7\u4ef6\uff1a\r\n\r\n```python\r\nfrom TkEasyGo.core import SimpleWindow, SimpleVariable\r\n\r\ndef basic_app():\r\n    # \u521b\u5efa\u7a97\u53e3\r\n    window = SimpleWindow(title=\"Basic TkEasyGo App\", width=300, height=200)\r\n    \r\n    # \u6dfb\u52a0\u6807\u7b7e\r\n    window.add_label(\"Welcome to TkEasyGo!\", row=0, column=0, columnspan=2)\r\n    \r\n    # \u6dfb\u52a0\u6587\u672c\u6846\r\n    textbox = window.add_textbox(\"Type here...\", row=1, column=0, columnspan=2)\r\n    \r\n    # \u6dfb\u52a0\u6309\u94ae\r\n    button = window.add_button(\"Submit\", lambda: print(\"Submit clicked\"), row=2, column=0, columnspan=2)\r\n    \r\n    # \u6dfb\u52a0\u590d\u9009\u6846\r\n    checkbox_var = SimpleVariable()\r\n    window.add_checkbox(\"Check me\", checkbox_var, row=3, column=0)\r\n    \r\n    # \u8fd0\u884c\u7a97\u53e3\r\n    window.run()\r\n\r\nif __name__ == \"__main__\":\r\n    basic_app()\r\n```\r\n\r\n### \u63a7\u4ef6\u4ecb\u7ecd\r\n\r\n#### \u6807\u7b7e (`Label`)\r\n\r\n\u7528\u4e8e\u663e\u793a\u9759\u6001\u6587\u672c\u3002\u53ef\u4ee5\u901a\u8fc7 `add_label` \u65b9\u6cd5\u6dfb\u52a0\u3002\r\n\r\n```python\r\nwindow.add_label(\"This is a label\", row=0, column=0)\r\n```\r\n\r\n#### \u6309\u94ae (`Button`)\r\n\r\n\u7528\u4e8e\u89e6\u53d1\u4e8b\u4ef6\u3002\u53ef\u4ee5\u901a\u8fc7 `add_button` \u65b9\u6cd5\u6dfb\u52a0\u3002\r\n\r\n```python\r\nwindow.add_button(\"Click Me\", lambda: print(\"Button clicked\"), row=1, column=0)\r\n```\r\n\r\n#### \u6587\u672c\u6846 (`Textbox`)\r\n\r\n\u7528\u4e8e\u8f93\u5165\u548c\u663e\u793a\u6587\u672c\u3002\u53ef\u4ee5\u901a\u8fc7 `add_textbox` \u65b9\u6cd5\u6dfb\u52a0\u3002\r\n\r\n```python\r\ntextbox = window.add_textbox(\"Default text\", row=2, column=0)\r\n```\r\n\r\n#### \u590d\u9009\u6846 (`Checkbox`)\r\n\r\n\u5141\u8bb8\u7528\u6237\u9009\u62e9\u6216\u53d6\u6d88\u9009\u62e9\u4e00\u4e2a\u9009\u9879\u3002\u53ef\u4ee5\u901a\u8fc7 `add_checkbox` \u65b9\u6cd5\u6dfb\u52a0\u3002\r\n\r\n```python\r\ncheckbox_var = SimpleVariable()\r\nwindow.add_checkbox(\"Check me\", checkbox_var, row=3, column=0)\r\n```\r\n\r\n#### \u5355\u9009\u6309\u94ae (`Radiobutton`)\r\n\r\n\u5141\u8bb8\u7528\u6237\u5728\u591a\u4e2a\u9009\u9879\u4e2d\u9009\u62e9\u4e00\u4e2a\u3002\u53ef\u4ee5\u901a\u8fc7 `add_radiobutton` \u65b9\u6cd5\u6dfb\u52a0\u3002\r\n\r\n```python\r\nradiobutton_var = SimpleVariable(\"1\")\r\nwindow.add_radiobutton(\"Option 1\", \"1\", radiobutton_var, row=4, column=0)\r\n```\r\n\r\n#### \u4e0b\u62c9\u6846 (`Combobox`)\r\n\r\n\u63d0\u4f9b\u4e00\u4e2a\u4e0b\u62c9\u5217\u8868\u4f9b\u7528\u6237\u9009\u62e9\u3002\u53ef\u4ee5\u901a\u8fc7 `add_combobox` \u65b9\u6cd5\u6dfb\u52a0\u3002\r\n\r\n```python\r\ncombobox = window.add_combobox([\"Option 1\", \"Option 2\", \"Option 3\"], row=5, column=0)\r\n```\r\n\r\n#### \u8fdb\u5ea6\u6761 (`Progressbar`)\r\n\r\n\u663e\u793a\u8fdb\u5ea6\u7684\u53ef\u89c6\u5316\u63a7\u4ef6\u3002\u53ef\u4ee5\u901a\u8fc7 `add_progressbar` \u65b9\u6cd5\u6dfb\u52a0\u3002\r\n\r\n```python\r\nprogressbar = window.add_progressbar(value=50, row=6, column=0, columnspan=2)\r\n```\r\n\r\n#### \u6ed1\u5757 (`Slider`)\r\n\r\n\u7528\u4e8e\u5728\u6570\u503c\u8303\u56f4\u5185\u9009\u62e9\u503c\u3002\u53ef\u4ee5\u901a\u8fc7 `add_slider` \u65b9\u6cd5\u6dfb\u52a0\u3002\r\n\r\n```python\r\nslider = window.add_slider(value=50, row=7, column=0, columnspan=2)\r\n```\r\n\r\n#### \u9009\u9879\u5361 (`Notebook`)\r\n\r\n\u63d0\u4f9b\u591a\u4e2a\u6807\u7b7e\u9875\u4ee5\u7ec4\u7ec7\u5185\u5bb9\u3002\u53ef\u4ee5\u901a\u8fc7 `add_notebook` \u65b9\u6cd5\u6dfb\u52a0\u3002\r\n\r\n```python\r\ndef tab1_content(window, frame):\r\n    window.add_label(\"This is Tab 1\", row=0, column=0, frame=frame)\r\n    window.add_button(\"Button in Tab 1\", lambda: print(\"Tab 1 Button clicked\"), row=1, column=0, frame=frame)\r\n\r\ndef tab2_content(window, frame):\r\n    window.add_label(\"This is Tab 2\", row=0, column=0, frame=frame)\r\n    window.add_button(\"Button in Tab 2\", lambda: print(\"Tab 2 Button clicked\"), row=1, column=0, frame=frame)\r\n\r\nwindow.add_notebook({\"Tab 1\": tab1_content, \"Tab 2\": tab2_content}, row=8, column=0, columnspan=2)\r\n```\r\n\r\n## \u4e8b\u4ef6\u7ed1\u5b9a\r\n\r\n\u53ef\u4ee5\u901a\u8fc7 `bind_event` \u65b9\u6cd5\u4e3a\u63a7\u4ef6\u7ed1\u5b9a\u4e8b\u4ef6\uff1a\r\n\r\n```python\r\nwindow.bind_event('textbox', '<KeyRelease>', lambda event: print(f\"Text changed to: {textbox.get()}\"))\r\nwindow.bind_event('button', '<Button-1>', lambda event: print(\"\r\n\r\nButton clicked\"))\r\n```\r\n\r\n## \u7a97\u53e3\u64cd\u4f5c\r\n\r\n### \u8bbe\u7f6e\u7a97\u53e3\u7684\u6700\u5c0f\u5316\u3001\u6700\u5927\u5316\u548c\u6062\u590d\u529f\u80fd\r\n\r\n`SimpleWindow` \u63d0\u4f9b\u4e86\u7a97\u53e3\u64cd\u4f5c\u7684\u65b9\u6cd5\uff0c\u5305\u62ec\u6700\u5c0f\u5316\u3001\u6700\u5927\u5316\u548c\u6062\u590d\uff1a\r\n\r\n- **\u6700\u5927\u5316**: \u4f7f\u7528 `maximize()` \u65b9\u6cd5\u5c06\u7a97\u53e3\u5207\u6362\u5230\u5168\u5c4f\u6a21\u5f0f\u3002\r\n- **\u6700\u5c0f\u5316**: \u4f7f\u7528 `minimize()` \u65b9\u6cd5\u5c06\u7a97\u53e3\u6700\u5c0f\u5316\u5230\u4efb\u52a1\u680f\u3002\r\n- **\u6062\u590d**: \u4f7f\u7528 `restore()` \u65b9\u6cd5\u5c06\u7a97\u53e3\u6062\u590d\u5230\u539f\u59cb\u5927\u5c0f\u3002\r\n\r\n\u793a\u4f8b\u4ee3\u7801\u5982\u4e0b\uff1a\r\n\r\n```python\r\ndef window_operations_app():\r\n    window = SimpleWindow(title=\"Window Operations App\", width=400, height=300)\r\n    \r\n    # \u6dfb\u52a0\u64cd\u4f5c\u6309\u94ae\r\n    window.add_button(\"Maximize\", window.maximize, row=0, column=0)\r\n    window.add_button(\"Minimize\", window.minimize, row=1, column=0)\r\n    window.add_button(\"Restore\", window.restore, row=2, column=0)\r\n    \r\n    # \u8fd0\u884c\u7a97\u53e3\r\n    window.run()\r\n\r\nif __name__ == \"__main__\":\r\n    window_operations_app()\r\n```\r\n\r\n## \u5e38\u89c1\u95ee\u9898\r\n\r\n### \u5982\u4f55\u8c03\u6574\u63a7\u4ef6\u7684\u6837\u5f0f\uff1f\r\n\r\n\u4f60\u53ef\u4ee5\u5728 `SimpleWindow` \u7684 `configure_styles` \u65b9\u6cd5\u4e2d\u914d\u7f6e\u63a7\u4ef6\u7684\u6837\u5f0f\u3002\u4f8b\u5982\uff1a\r\n\r\n```python\r\nwindow.configure_styles('TButton', padding=6, relief=\"flat\", background=\"#4CAF50\", font=(\"Arial\", 12))\r\n```\r\n\r\n### \u5982\u4f55\u8d21\u732e\u4ee3\u7801\uff1f\r\n\r\n\u5982\u679c\u4f60\u5e0c\u671b\u4e3a TkEasyGo \u505a\u51fa\u8d21\u732e\uff0c\u53ef\u4ee5\u901a\u8fc7 GitHub \u63d0\u4ea4 Pull Request\uff0c\u6216\u8005\u62a5\u544a\u95ee\u9898\u548c\u5efa\u8bae\u3002\u6211\u4eec\u6b22\u8fce\u4efb\u4f55\u5f62\u5f0f\u7684\u8d21\u732e\u3002\r\n\r\n## \u8054\u7cfb\u6211\u4eec\r\n\r\n- **\u7535\u5b50\u90ae\u4ef6**: tkeasygo@gmail.com\r\n- **GitHub**: [https://github.com/TkEasyGo/TkEasyGo](https://github.com//TkEasyGo)\r\n\r\n## \u8bb8\u53ef\u8bc1\r\n\r\n\u672c\u9879\u76ee\u4f7f\u7528 MIT \u8bb8\u53ef\u8bc1\uff0c\u8be6\u7ec6\u4fe1\u606f\u8bf7\u53c2\u89c1 [LICENSE](LICENSE) \u6587\u4ef6\u3002\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A simple cross-platform GUI generator.",
    "version": "0.3.0",
    "project_urls": {
        "Homepage": "https://github.com/TkEasyGo/TkEasyGo"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b4274d6e586d16f8591f83e0313d8c766e41d608c50df9b49f3c2bdb195eaabf",
                "md5": "b8688fb1e4a177036ea0598b595e0bf0",
                "sha256": "863d5c2537e2ca85a210d340d5beacb60460282993a4d3cfe3fa123df48c9b2e"
            },
            "downloads": -1,
            "filename": "TkEasyGo-0.3.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "b8688fb1e4a177036ea0598b595e0bf0",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 26509,
            "upload_time": "2024-09-03T02:16:44",
            "upload_time_iso_8601": "2024-09-03T02:16:44.944063Z",
            "url": "https://files.pythonhosted.org/packages/b4/27/4d6e586d16f8591f83e0313d8c766e41d608c50df9b49f3c2bdb195eaabf/TkEasyGo-0.3.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7ba0b92dcb7f800cc0c0117723bf45bfc72940995776b122f26210b1e4eadc6a",
                "md5": "b2f9fe0a01f62a4e30ed0b575e533563",
                "sha256": "015224da3a942cea374ab6bb7bd1154e70f916905e88696863b01b8ec756ac1e"
            },
            "downloads": -1,
            "filename": "TkEasyGo-0.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "b2f9fe0a01f62a4e30ed0b575e533563",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 27518,
            "upload_time": "2024-09-03T02:16:46",
            "upload_time_iso_8601": "2024-09-03T02:16:46.139009Z",
            "url": "https://files.pythonhosted.org/packages/7b/a0/b92dcb7f800cc0c0117723bf45bfc72940995776b122f26210b1e4eadc6a/TkEasyGo-0.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-09-03 02:16:46",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "TkEasyGo",
    "github_project": "TkEasyGo",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "tkeasygo"
}
        
Elapsed time: 0.40087s