快速搭建web见面

Rodja Trappe cadf8def65 fixing formattings and poetry version 4 rokov pred
.github cadf8def65 fixing formattings and poetry version 4 rokov pred
.vscode 852faab6b1 do not set blank lines 4 rokov pred
nicegui b98b507f75 trigger on_change on "change" (not on "input") 4 rokov pred
sceenshots 2b3acf9381 smaller screenshot 4 rokov pred
.gitignore 11844e40cc cleanup 4 rokov pred
Dockerfile 125e7db7c5 fixing dependencies and cleaner Dockerfile 4 rokov pred
README.md 75593d0567 fixing syntax 4 rokov pred
docker-compose.yml 72d4c24e8b do not show reloading popups 4 rokov pred
docker.sh 627296fbd6 simplified docker.sh 4 rokov pred
main.py 784af61900 numer: specify the number of decimal places 4 rokov pred
poetry.lock 125e7db7c5 fixing dependencies and cleaner Dockerfile 4 rokov pred
pyproject.toml 722462189c renaming from nice_gui to nicegui 4 rokov pred
setup.py 722462189c renaming from nice_gui to nicegui 4 rokov pred

README.md

NiceGUI

We like Streamlit 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. 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)

Usage

Write your nice GUI in a file main.py:

from nicegui import ui

ui.label('Hello NiceGUI!')
ui.button('BUTTON', on_click=lambda: print('button was pressed'))

Launch it with:

python3 main.py

Note: The script will automatically reload the GUI if you modify your code.

API

See main.py for an example of all API calls you can make with NiceGUI.

Plots

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()],
]))