A light-weighted GUI framework for Python programs.
Project description
[toc]
Clarisse
Clarisse is a light-weighted Python function GUI framework.
With at least one single line of code, you can easily create a user-friendly GUI for your code(or a part of your code), yet not make other changes!
TL;DR
If you have a function like
def func(arg1,arg2:int,arg3:str="have a try")->bool:
...
To give a GUI to a function like above, simply:
from clarisse import Clarisse
@Clarisse()
def func(arg1,arg2:int,arg3:str="have a try")->bool:
...
It's done.
Any time when func()
is called, a GUI will be showed, allowing user to manually input/modify/check the arguments about to be given to the originalfunc()
and get executed.
@Clarisse()
def func(arg1,arg2:int,arg3:str="have a try") -> bool:
"""This is only a ***test*** function\\
but enough to show what clarisse do!"""
print("arg1 is {0}".format(arg1))
print(arg3.upper())
return arg2>10
print(func("this is clarisse output",0))
Clarisse understands your need!
In the example above, func()
still returns the original bool
type value as if not modified(decorated); the arguments given when calling func()
will be default values of them and be shown on the GUI.
Clarisse provides you plenty of choices!
You can run func()
multiple times ( by clicking the Run
button ) and check the output in the output dialog provided, and close the window to "confirm" the last result as your final run.
Installation
#pip install clarisse
clarisse uses PySide2 as its backend GUI framework, so PySide2 is also needed to be installed.
Customization
- After using
@Clarisse()
, there are two ways to set the default value/ placeholder text for arguments : thedef
header of the function, the arguments' value when calling the function. The later way is prior than the former way. - The window could also be modified by giving arguments to
@Clarisse
.margin
is the distance from the widgets to the edge of window;vert_spacing
is the distance between widgets;description
is the introduction of the function as a default(func.__doc__
), but could also be customized to any other words you like;args_desc
is a list of string, each is used to replace the description label of an argument.args_kwdesc
is similar withargs_desc
, but description label are given as adict
like{[argument name]:[argument description]}
.
Examples
@Clarisse(
margin=10,
vert_spacing=10,
description="""another description. \\
Note that this description is <font color=#ff0000>prior</font> than \\
func.\_\_doc\_\_ .""")
def func(arg1,arg2:int,arg3:str="have a try") -> bool:
"""This is only a ***test*** function\\
but enough to show what clarisse do!"""
print("arg1 is {0}".format(arg1))
print(arg3.upper())
return arg2>10
print(func("this is clarisse output",0))
@Clarisse(args_desc=("This is arg1","This is arg2, label warps if it is too long"),args_kwdesc={"arg3":"an example to show args_kwdesc"})
def func(arg1,arg2:int,arg3:str="have a try") -> bool:
"""This is only a ***test*** function\\
but enough to show what clarisse do!"""
print("arg1 is {0}".format(arg1))
print(arg3.upper())
return arg2>10
print(func())
# actually doesn't need parameters when calling,
# but need to be given before Run is clicked.
...and, Future!
- Add more layouts, make them available to get changed;
- Apply QSS(CSS-like) style sheets for widgets to make them look better;
- Support classes;
- Add more supported types;
......
Acknowledgements
Thanks to the fire library that inspired me the idea;
Thanks to the latexify_py module that gives me the idea of interface and the lessons of python syntax analyzing and the usage of inspect
hey dude I also contributed to latexify_py that's a really handy module go star it
Thanks to Hieronym, for the splendid fan fiction To The Stars the best fanfiction space opera I've ever read, which gives the name of this module.
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.