|
4 yıl önce | |
---|---|---|
.github | 4 yıl önce | |
.vscode | 4 yıl önce | |
nicegui | 4 yıl önce | |
sceenshots | 4 yıl önce | |
.gitignore | 4 yıl önce | |
Dockerfile | 4 yıl önce | |
LICENSE | 4 yıl önce | |
README.md | 4 yıl önce | |
docker-compose.yml | 4 yıl önce | |
docker.sh | 4 yıl önce | |
examples.py | 4 yıl önce | |
main.py | 4 yıl önce | |
nicegui.code-workspace | 4 yıl önce | |
poetry.lock | 4 yıl önce | |
pyproject.toml | 4 yıl önce |
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 "NiceGUI".
NiceGUI is intended to be used for small scripts and user interfaces with a very limited user base. Custom "Smart-Home Control" solutions or "Robotics" for example. It's also helpful for development like tweaking/configuring a machine learning training or tuning motor controllers.
python3 -m pip install nicegui
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.
NiceGUI use the Quasar Framework and hence has 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')
Have a look at the Quasar documentation for all styling "props".
API Reference is hosted at https://nicegui.io. Also have a look at examples.py for an extensive demonstration what you can do with NiceGUI.
To render a simple plot you create a new context and call the neccessary Matplotlib functions:
from nicegui import ui
from matplotlib import pyplot as plt
import numpy as np
with ui.plot():
x = np.linspace(0.0, 5.0)
y = np.cos(2 * np.pi * x) * np.exp(-x)
plt.plot(x, y, '-')
plt.xlabel('time (s)')
plt.ylabel('Damped oscillation')
To update a plot in regular intervals, have look at main.py.
To simplify live updating line plots even more, NiceGUI provides ui.line_plot
with useful parameters and a push
method:
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()],
]))