[Python-ideas] A GUI for beginners and experts alike

Cody Piersall cody.piersall at gmail.com
Fri Aug 24 23:37:01 EDT 2018


On Thu, Aug 23, 2018 at 11:59 PM Steve Barnes <gadgetsteve at live.co.uk> wrote:
> There are already 2 ways of turning a python program that uses argparse
> into a GUI, (Gooey for wx & Quicken for QT IIRC), with minimal
> modification. There are a lot of good arguments for teaching people to
> use argparse and to write their code to be able to run from the command
> line but there is not a mechanism that I am aware of for turning
> argparse based code into a TK GUI this might be a fruitful area to look
> at.

I started working on a project that does that a few years ago.  It
requires that you provide a function that takes an argparse.Namespace,
and then it can make a GUI using tkinter.  The code is on GitHub:
https://github.com/codypiersall/cligui.  The license is MIT.

Example script using cligui:

```
# Makes a GUI appear.  How fortunate!
import argparse
import cligui

def get_parser():
    """Create a parser that does all the best things."""
    p = argparse.ArgumentParser(description='such a good program')
    p.add_argument('infile')
    p.add_argument('outfile')
    return p

def do_the_best_things(args):
    """This does the best things.

    Note: "args" is an argparse.Namespace -- the thing you get back whenever
    you call argparse.ArgumentParser().parse_args().
    """
    print('got args', args)

def main():
    """This incredible function will make a GUI appear.  Remarkable!"""
    p = get_parser()
    # call cligui.CliGui with the parser, and a function that takes an
    # argparse.Namespace as its argument.
    cligui.CliGui(p, do_the_best_things)

if __name__ == '__main__':
    main()
```

For background: the goal was to be able to let my less-technical
coworkers use scripts that I had written; but then I got a job
elsewhere and stopped working on this.

Cody


More information about the Python-ideas mailing list