# 🎉 EasyGUI Wrap 🖥️
**EasyGUI Wrap** is a playful, lightweight Python GUI library built on top of [DearPyGui](https://github.com/hoffstadt/DearPyGui). It simplifies GUI creation while giving you full control of DearPyGui under the hood. ✨
When installed, you can simply import it as `easygui` and start using the `EasyGUI` class immediately:
```python
import easygui
app = easygui.EasyGUI("My App", (800, 600))
```
Or explicitly:
```python
from easygui import EasyGUI
app = EasyGUI("My App", (800, 600))
```
---
## 🌟 Features
* Simplified API: `add_label`, `add_button`, `add_entry`.
* Supports **foreground/background colors**, **font size**, and **tags**. 🎨
* Full **dynamic resizing**: windows can automatically match the viewport. 📐
* Control **window decorations** separately:
* `decorated` → window title bar.
* `viewport_decorated` → OS-level decorations.
* Callbacks can use **normal arguments** and **tag-based arguments**. 🪄
* Full raw **DearPyGui access** for custom widgets. 🎨
* Two-way compatibility: EasyGUI and manual DPG widgets can interact.
* Fun emojis in labels, buttons, and widgets! 😎
* Dynamic fullscreen support for any window. 🖥️
---
## 🚀 Installation
```bash
pip install easygui_wrap
```
Dependencies `dearpygui` and `webcolors` are installed automatically.
---
## 🏁 Quick Start
```python
import easygui
def greet(name):
print(f"Hello, {name}! 👋")
app = easygui.EasyGUI("Demo App 🎈", (800, 600), bg_color="lightblue", decorated=False, viewport_decorated=True)
# EasyGUI widgets
app.add_label("Enter your name: 📝", fg="black")
app.add_entry(tag="name")
app.add_button("Say Hello 👋", greet, args_tags=["name"], bg="green", fg="white", font_size=14)
# Manual DPG widgets
dpg = app.dpg_module
manual_text = dpg.add_text("Manual DPG Text ✨", parent=app.main_window_tag)
manual_input = dpg.add_input_text(label="Manual input 🔑", parent=app.main_window_tag)
app.register_widget("manual_input", manual_input)
# Fullscreen a window dynamically
win = app.add_window("Fullscreen Window")
app.fullscreen(win, True)
app.show()
```
---
## 🛠️ API
### Constructor
```python
EasyGUI(title="My App", size=(800,600), bg_color="gray",
decorated=True, viewport_decorated=True)
```
* `title`: Window title.
* `size`: Tuple `(width, height)`.
* `bg_color`: Background color.
* `decorated`: Show window title bar.
* `viewport_decorated`: Show OS-level viewport decorations.
### Widgets
#### add_label
```python
add_label(text, tag=None, fg="white", font_size=None)
```
* `text`: Label text (emojis welcome! 😎)
* `tag`: Optional unique tag.
* `fg`: Foreground color.
* `font_size`: Optional font size.
#### add_entry
```python
add_entry(label="", default_value="", tag=None, width=200)
```
* `label`: Entry label.
* `default_value`: Initial text.
* `tag`: Optional unique tag.
* `width`: Entry width.
#### add_button
```python
add_button(text, callback=None, args=None, args_tags=None, fg="white", bg="gray", font_size=None, tag=None)
```
* `text`: Button label (emojis welcome! 🎉)
* `callback`: Function to call.
* `args`: List of normal arguments.
* `args_tags`: List of tags to pull values from.
* `fg`, `bg`: Colors.
* `font_size`: Optional font size.
* `tag`: Optional unique tag.
### Fullscreen
```python
fullscreen(window_tag=None, enable=True)
```
* `window_tag`: Target window tag, defaults to main window.
* `enable`: True to enable, False to disable.
* Automatically resizes window to viewport dynamically.
### Get/Set values
```python
value = app.get(tag)
app.set(tag, value)
```
### Register manual DPG widget
```python
app.register_widget(tag, dpg_id)
```
### Access raw DearPyGui
```python
dpg = app.dpg_module
main_window = app.main_window_tag
```
---
## 🎮 Example: Full Interoperability
```python
import easygui
def greet(name):
print(f"Hello, {name}! 😎")
app = easygui.EasyGUI("Full Demo 🚀", (800,600), decorated=False, viewport_decorated=True)
app.add_label("Enter your name: 📝", fg="black")
app.add_entry(tag="name")
app.add_button("Say Hello 👋", greet, args_tags=["name"], bg="green", fg="white", font_size=14)
# Manual DPG widgets
manual_text = app.dpg_module.add_text("Manual DPG Text ✨", parent=app.main_window_tag)
manual_input = app.dpg_module.add_input_text(label="Manual input 🔑", parent=app.main_window_tag)
app.register_widget("manual_input", manual_input)
# Callback accessing manual widget
app.add_button("Print Manual 🔍", lambda: print(app.get("manual_input")))
# Fullscreen a specific window
win = app.add_window("Fullscreen Window")
app.fullscreen(win, True)
app.show()
```
---
## 📜 License
MIT License
Raw data
{
"_id": null,
"home_page": "https://github.com/thesmal",
"name": "easygui-wrap",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "gui easygui_wrap dearpygui python",
"author": "Zaik",
"author_email": "stickma6@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/60/a6/e1cd4bc45f98420c6e74385f5856f2c537f418ebfa7f6ee3caba77f67643/easygui_wrap-1.0.8.tar.gz",
"platform": null,
"description": "# \ud83c\udf89 EasyGUI Wrap \ud83d\udda5\ufe0f\n\n**EasyGUI Wrap** is a playful, lightweight Python GUI library built on top of [DearPyGui](https://github.com/hoffstadt/DearPyGui). It simplifies GUI creation while giving you full control of DearPyGui under the hood. \u2728\n\nWhen installed, you can simply import it as `easygui` and start using the `EasyGUI` class immediately:\n\n```python\nimport easygui\n\napp = easygui.EasyGUI(\"My App\", (800, 600))\n```\n\nOr explicitly:\n\n```python\nfrom easygui import EasyGUI\napp = EasyGUI(\"My App\", (800, 600))\n```\n\n---\n\n## \ud83c\udf1f Features\n\n* Simplified API: `add_label`, `add_button`, `add_entry`.\n* Supports **foreground/background colors**, **font size**, and **tags**. \ud83c\udfa8\n* Full **dynamic resizing**: windows can automatically match the viewport. \ud83d\udcd0\n* Control **window decorations** separately:\n\n * `decorated` \u2192 window title bar.\n * `viewport_decorated` \u2192 OS-level decorations.\n* Callbacks can use **normal arguments** and **tag-based arguments**. \ud83e\ude84\n* Full raw **DearPyGui access** for custom widgets. \ud83c\udfa8\n* Two-way compatibility: EasyGUI and manual DPG widgets can interact.\n* Fun emojis in labels, buttons, and widgets! \ud83d\ude0e\n* Dynamic fullscreen support for any window. \ud83d\udda5\ufe0f\n\n---\n\n## \ud83d\ude80 Installation\n\n```bash\npip install easygui_wrap\n```\n\nDependencies `dearpygui` and `webcolors` are installed automatically.\n\n---\n\n## \ud83c\udfc1 Quick Start\n\n```python\nimport easygui\n\ndef greet(name):\n print(f\"Hello, {name}! \ud83d\udc4b\")\n\napp = easygui.EasyGUI(\"Demo App \ud83c\udf88\", (800, 600), bg_color=\"lightblue\", decorated=False, viewport_decorated=True)\n\n# EasyGUI widgets\napp.add_label(\"Enter your name: \ud83d\udcdd\", fg=\"black\")\napp.add_entry(tag=\"name\")\napp.add_button(\"Say Hello \ud83d\udc4b\", greet, args_tags=[\"name\"], bg=\"green\", fg=\"white\", font_size=14)\n\n# Manual DPG widgets\ndpg = app.dpg_module\nmanual_text = dpg.add_text(\"Manual DPG Text \u2728\", parent=app.main_window_tag)\nmanual_input = dpg.add_input_text(label=\"Manual input \ud83d\udd11\", parent=app.main_window_tag)\napp.register_widget(\"manual_input\", manual_input)\n\n# Fullscreen a window dynamically\nwin = app.add_window(\"Fullscreen Window\")\napp.fullscreen(win, True)\n\napp.show()\n```\n\n---\n\n## \ud83d\udee0\ufe0f API\n\n### Constructor\n\n```python\nEasyGUI(title=\"My App\", size=(800,600), bg_color=\"gray\",\n decorated=True, viewport_decorated=True)\n```\n\n* `title`: Window title.\n* `size`: Tuple `(width, height)`.\n* `bg_color`: Background color.\n* `decorated`: Show window title bar.\n* `viewport_decorated`: Show OS-level viewport decorations.\n\n### Widgets\n\n#### add_label\n\n```python\nadd_label(text, tag=None, fg=\"white\", font_size=None)\n```\n\n* `text`: Label text (emojis welcome! \ud83d\ude0e)\n* `tag`: Optional unique tag.\n* `fg`: Foreground color.\n* `font_size`: Optional font size.\n\n#### add_entry\n\n```python\nadd_entry(label=\"\", default_value=\"\", tag=None, width=200)\n```\n\n* `label`: Entry label.\n* `default_value`: Initial text.\n* `tag`: Optional unique tag.\n* `width`: Entry width.\n\n#### add_button\n\n```python\nadd_button(text, callback=None, args=None, args_tags=None, fg=\"white\", bg=\"gray\", font_size=None, tag=None)\n```\n\n* `text`: Button label (emojis welcome! \ud83c\udf89)\n* `callback`: Function to call.\n* `args`: List of normal arguments.\n* `args_tags`: List of tags to pull values from.\n* `fg`, `bg`: Colors.\n* `font_size`: Optional font size.\n* `tag`: Optional unique tag.\n\n### Fullscreen\n\n```python\nfullscreen(window_tag=None, enable=True)\n```\n\n* `window_tag`: Target window tag, defaults to main window.\n* `enable`: True to enable, False to disable.\n* Automatically resizes window to viewport dynamically.\n\n### Get/Set values\n\n```python\nvalue = app.get(tag)\napp.set(tag, value)\n```\n\n### Register manual DPG widget\n\n```python\napp.register_widget(tag, dpg_id)\n```\n\n### Access raw DearPyGui\n\n```python\ndpg = app.dpg_module\nmain_window = app.main_window_tag\n```\n\n---\n\n## \ud83c\udfae Example: Full Interoperability\n\n```python\nimport easygui\n\ndef greet(name):\n print(f\"Hello, {name}! \ud83d\ude0e\")\n\napp = easygui.EasyGUI(\"Full Demo \ud83d\ude80\", (800,600), decorated=False, viewport_decorated=True)\napp.add_label(\"Enter your name: \ud83d\udcdd\", fg=\"black\")\napp.add_entry(tag=\"name\")\napp.add_button(\"Say Hello \ud83d\udc4b\", greet, args_tags=[\"name\"], bg=\"green\", fg=\"white\", font_size=14)\n\n# Manual DPG widgets\nmanual_text = app.dpg_module.add_text(\"Manual DPG Text \u2728\", parent=app.main_window_tag)\nmanual_input = app.dpg_module.add_input_text(label=\"Manual input \ud83d\udd11\", parent=app.main_window_tag)\napp.register_widget(\"manual_input\", manual_input)\n\n# Callback accessing manual widget\napp.add_button(\"Print Manual \ud83d\udd0d\", lambda: print(app.get(\"manual_input\")))\n\n# Fullscreen a specific window\nwin = app.add_window(\"Fullscreen Window\")\napp.fullscreen(win, True)\n\napp.show()\n```\n\n---\n\n## \ud83d\udcdc License\n\nMIT License\n",
"bugtrack_url": null,
"license": null,
"summary": "A beginner-friendly, stylish GUI wrapper for Python using DearPyGui.",
"version": "1.0.8",
"project_urls": {
"Homepage": "https://github.com/thesmal"
},
"split_keywords": [
"gui",
"easygui_wrap",
"dearpygui",
"python"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "0da7cec38e35ec505b384876a684dfffaee49b7af721acbc6c74a360771535e8",
"md5": "b087a84bb1eb2a026b04721473e0d34b",
"sha256": "c8fec05c4fb0e88a1844e1dd6302632ccb978ae448b87dcd1f0483b3980dba8e"
},
"downloads": -1,
"filename": "easygui_wrap-1.0.8-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b087a84bb1eb2a026b04721473e0d34b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 4394,
"upload_time": "2025-10-24T07:12:53",
"upload_time_iso_8601": "2025-10-24T07:12:53.429973Z",
"url": "https://files.pythonhosted.org/packages/0d/a7/cec38e35ec505b384876a684dfffaee49b7af721acbc6c74a360771535e8/easygui_wrap-1.0.8-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "60a6e1cd4bc45f98420c6e74385f5856f2c537f418ebfa7f6ee3caba77f67643",
"md5": "45754c98c9d122dcb985d8044d1ffa7a",
"sha256": "1e185b3bb3274c8f44e45a346d6e3aecc281cf2027984dc6792a238646a82742"
},
"downloads": -1,
"filename": "easygui_wrap-1.0.8.tar.gz",
"has_sig": false,
"md5_digest": "45754c98c9d122dcb985d8044d1ffa7a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 4222,
"upload_time": "2025-10-24T07:12:55",
"upload_time_iso_8601": "2025-10-24T07:12:55.241481Z",
"url": "https://files.pythonhosted.org/packages/60/a6/e1cd4bc45f98420c6e74385f5856f2c537f418ebfa7f6ee3caba77f67643/easygui_wrap-1.0.8.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-24 07:12:55",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "easygui-wrap"
}