Skip to main content

An automatic, terminal based interactive interface for any Python 3 `argparse` command line with keyboard and mouse support.

Project description

ArgUI

ArgUI's Logo

An automatic, terminal based interactive interface for any Python 3 argparse command line with keyboard and mouse support.


See It in Action

Demo of the features in ArgUI

Get a feel for the features of ArgUI using the Demo.py code included in this project.

Usage

Install as a Dependency

The ArgUI package is available on PyPi.

It can be installed by calling: pip install argparse-interface

Setup Your Argparse

ArgUI supports wrapping any implementation of the Python 3 argparse native library. This will all you to use both standard terminal and interface modes to interact with your program.

# Import
import argparse
import argui

# Setup your ArgumentParser normally
parser = argparse.ArgumentParser(prog="Demo")

# `add_argument`, `add_argument_group`, etc...

# Wrap your parser
interface = argui.Wrapper(parser)

# Get arguments
args: argparse.Namespace = interface.parseArgs()

# `args` is the same as if you had called `parser.parse_args()`

See Demo.py for more information.

Run Your Program

Your program can now be run in both CLI and GUI modes.

To run in CLI mode, simply use your script as normal like python foo.py -h.

To run in GUI mode, provide only the --gui (by default) argument like python foo.py --gui.

Navigation

Mouse navigation of the GUI is possible in most terminals.

There are known issues with the VSCode terminal on Windows 10 and some others. However, Mouse navigation does work in Powershell when opened on its own.

Keyboard navigation is always available using Tab, Arrow Keys, and Enter. But make note that if you are using a terminal within another program (like VSCode), that some more advanced keyboard commands (like CTRL+S) may be captured by the container program and not sent to the GUI.

Advanced Argument Types

ArgUI also provides a number of meta types to be used with the .add_argument(type=...) function to add additional functionality to the interface mode.

These can be accessed with import argui.types.

Example Usage

Meta Types can be used for the type keyword argument anywhere you call the add_argument(...) function.

# Import
import argparse
import argui
from argui.types import FileSelectFile

# Setup your ArgumentParser normally
parser = argparse.ArgumentParser(prog="Demo")

# Define your arguments
parser.add_argument(
    "-p",
    "--path",
    type=FileSelectFile(exts=[".png", ".jpg"]), # Instantiate the Meta Type
    help="A file or directory path argument"
)

# Wrap the parser with ArgUI and use as normal (see above)

File Select

All options will show the File Select input in the GUI mode and operate as advanced types in the CLI mode.

Type Effect Notes
pathlib.Path
(native)
Allows for any file or directory to be selected. Provided as an uninstantiated type like: type=Path
FileSelectFile Allows only files to be selected. Optionally restricts selection to specified file types. Accepts a list of extensions to whitelist.
FileSelectDir Allows only directories to be selected.

Development Setup

  1. Clone this repo and enter the directory with a terminal.
  2. Setup a Python Env: python -m venv .venv --prompt "argUI"
  3. Enter the Python Env.
  4. Install requirements: pip install -r requirements.txt

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

argparse_interface-0.2.0.tar.gz (25.0 kB view details)

Uploaded Source

Built Distribution

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

argparse_interface-0.2.0-py3-none-any.whl (36.3 kB view details)

Uploaded Python 3

File details

Details for the file argparse_interface-0.2.0.tar.gz.

File metadata

  • Download URL: argparse_interface-0.2.0.tar.gz
  • Upload date:
  • Size: 25.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.10.5

File hashes

Hashes for argparse_interface-0.2.0.tar.gz
Algorithm Hash digest
SHA256 146ad2869e63da85da6377e1e0f6b9c87181c561aaf5256ce8157c433f47ca62
MD5 1857dec5e1b8e837a2fe2ba61e812218
BLAKE2b-256 05ebff9bc885f1ff8234a73a3b1df1fe22b618b04899589e7e68a25bdc35af30

See more details on using hashes here.

File details

Details for the file argparse_interface-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for argparse_interface-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 00abc968811ff04e2529bbf13331a1824176897bf58baf40232aa7008aa068e6
MD5 a8dc088e6293196810244870c8d68705
BLAKE2b-256 bdc3c33f56209905a5b0993c7e17a3dd0f6b354e205c9b9685d2ab046e1981d8

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