# NiceGUI We like [Streamlit](https://streamlit.io/) but find it does to much magic when it comes to state handling. In search for an alernative nice library to write simple graphical user interfaces in Python we discovered [justpy](https://justpy.io/). While too "low-level-html" for our daily usage it provides a great basis for our shot at a "NiceGUI". ## Features - browser-based GUI - implicit reload on code change - clean set of GUI elements (label, button, checkbox, switch, slider, input, ...) - simple grouping with rows, columns and cards - built-in timer to refresh data in intervals (even every 10 ms) - straight-forward data bindings to write even less code ## Usage Write your nice GUI in a file `main.py`: ```python from nicegui import ui ui.label('Hello NiceGUI!') ui.button('BUTTON', on_click=lambda: print('button was pressed')) ``` Launch it with: ```bash python3 main.py ``` Note: The script will automatically reload the GUI if you modify your code. ## API See [main.py](/main.py) for an example of all API calls you can make with NiceGUI. ## Plots ```python lines = ui.line_plot(n=2, limit=20).with_legend(['sin', 'cos'], loc='upper center', ncol=2) ui.timer(0.1, lambda: lines.push([datetime.now()], [ [np.sin(datetime.now().timestamp()) + 0.02 * np.random.randn()], [np.cos(datetime.now().timestamp()) + 0.02 * np.random.randn()], ])) ```