快速搭建web见面

Rodja Trappe 73005fbcee fixing screenshot urls 4 年之前
.github fc127dc4fe trying to make automated pypi releases with poetry 4 年之前
.vscode 852faab6b1 do not set blank lines 4 年之前
nicegui 518732d900 more flexible design arguments 4 年之前
sceenshots a3d0d1a89f forgot screenshot 4 年之前
.gitignore 11844e40cc cleanup 4 年之前
Dockerfile e11050e6f3 made dev container debuggable 4 年之前
LICENSE 0cb68ea25c Adding license 4 年之前
README.md 73005fbcee fixing screenshot urls 4 年之前
docker-compose.yml 72d4c24e8b do not show reloading popups 4 年之前
docker.sh 627296fbd6 simplified docker.sh 4 年之前
main.py 1541486165 some design doc 4 年之前
nicegui.code-workspace e11050e6f3 made dev container debuggable 4 年之前
poetry.lock 125e7db7c5 fixing dependencies and cleaner Dockerfile 4 年之前
pyproject.toml fd28733c72 fixed syntax 4 年之前
setup.py 722462189c renaming from nice_gui to nicegui 4 年之前

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)
  • straight-forward data bindings to write even less code

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.

Design

We use the Quasar Framework and hence have their full design power. Each NiceGUI element provides a design property which content is passed as props the Quasar component:

ui.radio(['x', 'y', 'z'], design='inline color=green')
ui.button(icon='touch_app', design='outline round')

For all styling "props" as Quasar calls them have a look at their documentation.

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