Simplify the creation of GUI elements in terminals and Jupyter Notebooks
Project description
EZInput
EZInput is a Python library that simplifies the creation of user interfaces both in the terminal and in Jupyter notebooks. It provides a convenient way to add various types of widgets, making it easier to interact with your code and visualize results.
DISCLAIMER: the project is currently in alpha stage and will likely suffer changes in the API and functionality.
Installation
To install EZInput, you can use pip:
pip install ezinput
Usage
EZInput provides a unified interface for creating UIs in either the terminal or Jupyter notebooks. The mode is automatically determined based on the environment.
Terminal Mode
To create a GUI in the terminal using prompt_toolkit:
from ezinput import EZInput
gui = EZInput(title="My Terminal GUI")
# Add GUI elements
gui.add_check("confirm", "Do you want to proceed?", remember_value=True)
gui.add_text("name", "Enter your name:", placeholder="John Doe", remember_value=True)
gui.add_int_range("age", "Enter your age:", 18, 100, remember_value=True)
gui.add_float_range("height", "Enter your height (in meters):", 1.0, 2.5, remember_value=True)
gui.add_dropdown("color", ["Red", "Blue", "Green"], "Choose your favorite color:", remember_value=True)
gui.add_path_completer("file_path", "Enter a file path:", remember_value=True)
# Save settings
gui.save_settings()
# Restore default settings
gui.restore_default_settings()
Jupyter Notebook Mode
To create a GUI in Jupyter notebooks using ipywidgets:
from ezinput import EZInput
gui = EZInput(title="My Jupyter GUI")
# Add GUI elements
gui.add_text("text", description="Enter some text:", placeholder="Hello, world!", remember_value=True)
gui.add_int_range("int_slider", description="Choose a number:", vmin=0, vmax=10, remember_value=True)
gui.add_float_range("float_slider", description="Choose a decimal:", vmin=0.0, vmax=1.0, remember_value=True)
gui.add_check("checkbox", description="Check this box:", remember_value=True)
gui.add_dropdown("dropdown", options=["Option 1", "Option 2", "Option 3"], description="Choose an option:", remember_value=True)
gui.add_file_upload("file_upload", accept=".txt", multiple=False)
# Display the GUI
gui.show()
# Save settings
gui.save_settings()
Unified API
EZInput provides a unified API for both terminal and Jupyter notebook modes. The following methods are available:
add_label(tag, label): Add a label to the GUI.add_text(tag, description, placeholder="", remember_value=False): Add a text input field.add_text_area(tag, description, placeholder="", remember_value=False): Add a multi-line text area.add_int_range(tag, description, vmin, vmax, remember_value=False): Add an integer slider or range input.add_float_range(tag, description, vmin, vmax, remember_value=False): Add a float slider or range input.add_check(tag, description, remember_value=False): Add a yes/no or checkbox input.add_dropdown(tag, options, description="", remember_value=False): Add a dropdown menu.add_callback(tag, func, values, description="Run"): Add a function to be ran (if in jupyter, after the press of the generated button) that triggers a callback function.
Recent Changes
- All widget-adding methods now use the
stylefromkwargsif provided, otherwise default toself._style. add_custom_widgetnow accepts either a widget class (which will be instantiated with*argsand**kwargs) or a widget instance.
Example: Using Custom Styles
import ipywidgets as widgets
from ezinput.ezinput_jupyter import EZInputJupyter
gui = EZInputJupyter()
gui.add_text('name', description='Name:', style={'description_width': 'initial'})
Example: Adding a Custom Widget
# Pass a widget class (with args/kwargs)
gui.add_custom_widget('slider', widgets.IntSlider, min=0, max=10, value=5)
# Or pass an already-instantiated widget
dropdown = widgets.Dropdown(options=['A', 'B', 'C'], value='A')
gui.add_custom_widget('dropdown', dropdown)
Saving and Restoring Settings
EZInput allows you to save and restore widget values using configuration files:
# Save current settings
gui.save_settings()
# Restore default settings
gui.restore_default_settings()
Examples
Terminal Example
from ezinput import EZInput
gui = EZInput(title="Terminal Example")
gui.add_text("username", "Enter your username:", remember_value=True)
gui.add_int_range("age", "Enter your age:", 18, 100, remember_value=True)
gui.save_settings()
Jupyter Notebook Example
from ezinput import EZInput
gui = EZInput(title="Jupyter Example")
gui.add_text("username", description="Enter your username:", remember_value=True)
gui.add_int_range("age", description="Enter your age:", vmin=18, vmax=100, remember_value=True)
gui.show()
License
This project is licensed under the MIT License. See the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ezinput-0.0.8.tar.gz.
File metadata
- Download URL: ezinput-0.0.8.tar.gz
- Upload date:
- Size: 12.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f830275aa044e5d82f7d19090de2d7cf90f9a26b067037c70030b29779f7488f
|
|
| MD5 |
1f8e6568490210a0dc0fa728af406a1f
|
|
| BLAKE2b-256 |
52e763d0f4f428bfc00ff2b1a618b05ee745664523507af29645fdff59740717
|
File details
Details for the file ezinput-0.0.8-py3-none-any.whl.
File metadata
- Download URL: ezinput-0.0.8-py3-none-any.whl
- Upload date:
- Size: 11.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3cf56b9451ccc876e3a26489c18decfc2bb7e5f7f6c49992a5c6efc9657cefac
|
|
| MD5 |
a9ae3c6f924a8e6817f3066762f5fe40
|
|
| BLAKE2b-256 |
3c082f00a3495aaedc2fe5f353cb50f2dfd607ba218be1ebe5061db24cd96784
|