{"id":16651395,"url":"https://github.com/twardoch/ezgooey","last_synced_at":"2025-04-09T17:31:13.428Z","repository":{"id":57427905,"uuid":"295062384","full_name":"twardoch/ezgooey","owner":"twardoch","description":"Simplified usage of https://github.com/chriskiehl/Gooey that turns argparse-based Python CLIs into GUI apps","archived":false,"fork":false,"pushed_at":"2025-03-06T14:26:48.000Z","size":29,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-23T19:39:05.543Z","etag":null,"topics":["cli","gooey","gui","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/twardoch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-09-13T02:22:45.000Z","updated_at":"2025-03-06T14:26:52.000Z","dependencies_parsed_at":"2022-09-09T05:00:50.757Z","dependency_job_id":null,"html_url":"https://github.com/twardoch/ezgooey","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twardoch%2Fezgooey","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twardoch%2Fezgooey/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twardoch%2Fezgooey/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twardoch%2Fezgooey/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/twardoch","download_url":"https://codeload.github.com/twardoch/ezgooey/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248077258,"owners_count":21043928,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","gooey","gui","python"],"created_at":"2024-10-12T09:25:11.965Z","updated_at":"2025-04-09T17:31:13.154Z","avatar_url":"https://github.com/twardoch.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ezgooey\n\n## ezgooey.ez\n\n[Gooey](https://github.com/chriskiehl/Gooey) is a Python package, which lets you turn argparse-based CLI apps into cross-platform GUI apps. [ezgooey.ez](https://github.com/twardoch/ezgooey) makes this even simpler.\n\nWhen you start your app without CLI arguments, it’ll run in GUI, but if you supply CLI arguments, it’ll run as CLI. Import, then add the `@ezgooey` decorator to the function where you initialize the `ArgumentParser`.\n\n## Changelog\n\n- 1.3.3: added support for add_mutually_exclusive_group\n- 1.3.2: fixes\n### Simple\n\n```python\nfrom ezgooey.ez import *\n\n@ezgooey\ndef get_parser():\n    parser = ArgumentParser(\n        prog='appname',\n        description='app description'\n    )\n    parser.add_argument(\n        '-a',\n        '--alternative',\n        dest='alt',\n        action='store_true',\n        help='alternative processing',\n        gooey_options={\n            'show_label': False,\n        }\n    )\n    return parser\n\nparser = get_parser()\nopts = parser.parse_args()\n```\n\n### Advanced\n\n```Python\nfrom ezgooey.ez import *\n\nGUI_NAME = 'GUI App Name'\nCLI_NAME = 'cliapp'\n\n@ezgooey(\n    advanced=True,\n    auto_start=False,\n    body_bg_color='#f0f0f0',\n    clear_before_run=False,\n    default_size=(800, 600),\n    disable_progress_bar_animation=False,\n    disable_stop_button=False,\n    dump_build_config=False,\n    error_color='#ea7878',\n    footer_bg_color='#f0f0f0',\n    force_stop_is_error=True,\n    fullscreen=False,\n    group_by_type=True,\n    header_bg_color='#ffffff',\n    header_height=80,\n    header_height=90,\n    header_image_center=False,\n    header_show_subtitle=True,\n    header_show_title=True,\n    hide_progress_msg=False,\n    image_dir='::gooey/default',\n    language='english',\n    language_dir=getResourcePath('languages'),\n    load_build_config=None,\n    navigation='Tabbed',\n    optional_cols=1,\n    poll_external_updates=False,\n    program_description=None,\n    program_name=GUI_NAME,\n    progress_expr=None,\n    progress_regex=None,\n    required_cols=1,\n    requires_shell=True,\n    return_to_config=False,\n    richtext_controls=True,\n    show_failure_modal=True,\n    show_restart_button=True,\n    show_sidebar=False,\n    show_stop_warning=True,\n    show_success_modal=False,\n    sidebar_bg_color='#f2f2f2',\n    sidebar_title=None,\n    suppress_gooey_flag=True,\n    tabbed_groups=False,\n    target=None,\n    terminal_font_color='#000000',\n    terminal_font_family=None,\n    terminal_font_size=None,\n    terminal_font_weight=None,\n    terminal_panel_color='#F0F0F0',\n    use_legacy_titles=True,\n    menu=[{\n        'name' : 'Help',\n        'items': [{\n            'type'       : 'AboutDialog',\n            'menuTitle'  : 'About',\n            'name'       : GUI_NAME,\n            'description': 'Click the link for more info',\n            'website'    : 'https://your.link/',\n            'license'    : 'MIT'\n        }, {\n            'type'     : 'Link',\n            'menuTitle': '%s Help' % (GUI_NAME),\n            'url'      : 'https://your.link/docs/'\n        }]\n    }]\n    )\ndef get_parser():\n    parser = ArgumentParser(\n        prog=CLI_NAME,\n        description='app description'\n    )\n\n    parser_g1 = parser.add_argument_group(\n        'Group 1',\n        gooey_options={\n            'show_border': True,\n            'columns'    : 2,\n            'margin_top' : 0\n            }\n        )\n    parser_g1.add_argument(\n        nargs='+',\n        dest='objects',\n        type=str,\n        metavar='objects',\n        help='List of objects',\n        widget='Textarea',\n        gooey_options={\n            'height': 120,\n        }\n    )\n\n    parser_g2 = parser_q.add_mutually_exclusive_group(\n        required=False\n    )\n    parser_g2.add_argument(\n        '-a',\n        '--add',\n        dest='add',\n        action='store_true',\n        help='add objects',\n        gooey_options={\n            'show_help': False,\n        }\n    )\n    parser_g2.add_argument(\n        '-r',\n        '--remove',\n        dest='remove',\n        action='store_true',\n        help='remove objects',\n        gooey_options={\n            'show_help': False,\n        }\n    )\n    parser_g1.add_argument(\n        '-l',\n        '--log',\n        dest='log',\n        action='store_true',\n        help='print log',\n        gooey_options={\n            'show_label': False,\n        }\n    )\n\n    parser_g3 = parser.add_argument_group(\n        'Options',\n        gooey_options={\n        'show_border'   : True,\n        'columns'       : 2,\n        'margin_top'    : 0\n    })\n    parser_g3.add_argument(\n        '-l',\n        '--lang',\n        nargs='*',\n        dest='languages',\n        type=str,\n        metavar='language',\n        help='list of languages',\n        gooey_options={\n            'show_label': False,\n        }\n    )\n    parser_g3.add_argument(\n        '-s',\n        '--sort',\n        dest='sort',\n        type=str,\n        choices=['asc', 'desc'],\n        default='asc',\n        help='sort results',\n        gooey_options={\n            'show_label': False,\n        }\n    )\n    parser_g3.add_argument(\n        '-o',\n        '--output',\n        dest='output',\n        type=str,\n        widget='FileSaver',\n        metavar='output_file',\n        help='save output to this file',\n        gooey_options={\n            'show_label': False,\n        }\n    )\n    parser_g3.add_argument(\n        '-i',\n        '--input-dir',\n        dest='input_dir',\n        type=str,\n        widget='DirChooser',\n        metavar='input_folder',\n        help='read files from this folder',\n        gooey_options={\n            'show_label': False,\n        }\n    )\n    return parser\n\nparser = get_parser()\nopts = parser.parse_args()\n```\n\nThe `@ezgooey` decorator uses the same arguments as the original `@Gooey` decorator. `See [Gooey documentation](https://github.com/chriskiehl/Gooey) for a detailed description.\n\n## ezgooey.logging\n\nThis package also includes a simple colorful logger that is compatible with Gooey's richtext control.\n\n### Simple usage\n\nImport and initialize in one place\n\n```python\nimport ezgooey.logging as logging\nlogging.init(level=logging.INFO)\n```\n\nUse\n\n```python\nlogging.info('info')\nlogging.warning('warning')\nlogging.error('error')\nlogging.success('success')\n```\n\nIn other places, just do:\n\n```python\nimport logging\nlogging.info('info')\n```\n\n### Advanced usage\n\nImport and initialize in one place\n\n```python\nimport ezgooey.logging as logging\nlogging.init(level=logging.INFO)\n```\n\nIn other places:\n\n```python\nimport ezgooey.logging as logging\nlog = logging.logger('appname')\nlog.info('info')\nlog.warning('warning')\nlog.error('error')\nlog.success('success')\n...\n```\n\n## Example\n\nMy [PyPolona](https://twardoch.github.io/pypolona/) project is an app, made with the help of ezgooey and packaged for macOS and Windows with PyInstaller. Check the [sources](https://github.com/twardoch/pypolona) for details.\n\n## Requirements\n\nRequires Python 3.9+\n\n## License and Copyright\n\nCopyright © 2021 Adam Twardoch. Licensed under the terms of the [MIT license](./LICENSE).\n\u003c!-- Place this tag in your head or just before your close body tag. --\u003e\n\u003cscript async defer src=\"https://buttons.github.io/buttons.js\"\u003e\u003c/script\u003e\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwardoch%2Fezgooey","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftwardoch%2Fezgooey","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwardoch%2Fezgooey/lists"}