Skip to main content

Simplify the creation of GUI elements in terminals and Jupyter Notebooks

Project description

EZInput

PyPI Python Version Downloads Docs License Tests Coverage Contributors GitHub stars GitHub forks DOI

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 style from kwargs if provided, otherwise default to self._style.
  • add_custom_widget now accepts either a widget class (which will be instantiated with *args and **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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ezinput-0.0.9.tar.gz (13.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ezinput-0.0.9-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file ezinput-0.0.9.tar.gz.

File metadata

  • Download URL: ezinput-0.0.9.tar.gz
  • Upload date:
  • Size: 13.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ezinput-0.0.9.tar.gz
Algorithm Hash digest
SHA256 ef4049ae48698e91e9972fc5f208e01374d039bad7e89e8921ba2ca7788feab0
MD5 f899bd80b9b62cc91d44b725e8d5af24
BLAKE2b-256 e72f6c19b67f453322d3225a7ac8a61fd2fdeffd48ed358cb3d10ff5951428e0

See more details on using hashes here.

File details

Details for the file ezinput-0.0.9-py3-none-any.whl.

File metadata

  • Download URL: ezinput-0.0.9-py3-none-any.whl
  • Upload date:
  • Size: 12.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ezinput-0.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 ae62d87ba40685f527e28bccb4786ec22e10b64f83a8624bc7597f008a9f8b38
MD5 3f2bce9c25ca77b4964deca316fc68bb
BLAKE2b-256 26db5b1bae3888de9df32f338800f54b227e1a2b6f07e5ff8569b4a455020fda

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page