Be taught NiceGUI: The Final GUI Framework



With the speedy development in Machine Studying and Deep Studying web site functions, builders are on the fixed search for new Net Frameworks that make constructing these web site functions a lot simpler. The recognition of Information science functions has gone up, thus an increase in new Frameworks. Builders create quite a few new frameworks that show useful in setting up these web site functions. And one such Framework is NiceGUI. On this article we shall be specializing in this Framework and how you can construct easy functions with it.

Studying Aims

  • To know NiceGUI
  • Be taught to write down Fundamental Components with NiceGUI
  • Perceive the working of Worth Bindings
  • Working with NiceGUI to show information in UI
  • To construct functions with NiceGUI

This text was revealed as part of the Information Science Blogathon.

What’s NiceGUI?

NiceGUI is a simple-to-use Python-based Net-UI Framework, with the aim of creating creating Frontend functions straightforward in Python. NiceGUI Framework’s UI components are based mostly on Vue and Quasar. Good GUI comes with many ready-to-use components. It even permits worth binding between totally different components. NiceGUI permits straightforward show of a variety of plots. Its builders selected to construct it on prime of the Quick API Framework for its quick efficiency and user-friendly interface.

The styling in NiceGUI will get change with CSS, Tailwind, and Quasar. By default, it permits customizable styling. Use NiceGUI to construct from quick scripts to dashboards to full robotics tasks and even Machine Studying web site functions.

A number of the options embody:

  • Preloaded with ready-to-use GUI components like buttons, labels, checkboxes, sliders, switches, and many others
  • Emoji favicon, SVG and base64 assist
  • Supplies straightforward information binding
  • Constructed-in Timer for refreshing the info
  • In a position to render 3D scenes, plot graphs
  • Can simply show Photographs and Movies
  • It makes it straightforward to customise the pages and layouts and has built-in assist for Tailwind CSS

Putting in NiceGUI

Obtain NiceGUI like different regular Python packages with pip. The next Python’s pip command will NiceGUI and even installs the dependencies it depends on.

pip set up nicegui

Notice that the NiceGUI even gives a Docker Picture to check its options with out downloading it to the machine. Let’s have a look at some instance code:

from nicegui import ui

ui.label('Welcome to NiceGUI!')
ui.button('Click on Right here', on_click=lambda: ui.notify('Button Pressed'))

To work with NiceGUI, we have to import the library nicegui. We are going to use three features from nicegui right here

  • label(): Use this perform to show textual content on the UI
  • button(): This perform is for making a clickable button for the UI.
  • notify(): A popup on the backside will show no matter is written on this perform.

Let’s run the code and see the output under

Installing NiceGUI
Installing NiceGUI

The appliance could be accessed from PORT 8080. We see {that a} button Click on Right here is current right here. Upon clicking that button, a popup displayed telling that the Button Pressed

Fundamental Components of NiceGUI

On this part, we’ll look into among the fundamental components which we’ll create with the NiceGUI framework.

Icons and Hyperlinks

Let’s begin with displaying Icons and Linking web sites to texts within the UI

from nicegui import ui

ui.label('Show Icon')
ui.icon('fingerprint', shade="main").lessons('text-5xl')
ui.hyperlink('NiceGUI on GitHub', '')


Create the next features from the above code:

  • The perform “icon()” permits us to show Icons on the UI. To show an Icon, we have to present an Icon title. This perform depends on Quasar’s QIcon. The colour possibility could be specified utilizing CSS, Quasar, or Tailwind shade. The dimensions possibility is set by the lessons() technique, utilizing CSS models.
  • The perform “hyperlink()” permits us to assign hyperlinks to textual content within the UI. First, we specify the textual content that must be linked, adopted by the corresponding web site URL.

Working the code will outcome within the under output

 NiceGUI on GitHub

We see that the fingerprint icon is displayed on the display screen. Additionally clicking on the “NiceGUI on GitHub”, will redirect us to NiceGUI’s GitHub Web page.

Choice Components

NiceGUI has totally different choice components like Toggle Packing containers, Radio Choices, and Examine Packing containers. The under code accommodates all these components imported from NiceGUI.

from nicegui import ui

ui.label('Toggle Field')
toggle = ui.toggle([1, 2, 3], worth=1)

ui.label('Radio Choice')
radio =["one","two","three"], worth=1).props('inline')

ui.label('Dropdown Choose')
choose = ui.choose(["red","blue","green"], worth=1)

ui.label('Examine Field')
checkbox = ui.checkbox('examine me')

The features within the above code embody:

  • toggle(): This perform can generate a toggle field, the place we cross the choices by a listing of values of dictionaries containing a mapping of values to labels. When the person selects an possibility, it’s saved within the toggle variable.
  • radio(): This works just like the toggle() perform however right here we get radio choices to pick out
  • choose(): This perform generates a dropdown to pick out a particular possibility. The enter to this perform and the output worth saved is similar when in comparison with the above features
  • checkbox(): When the person checks the checkbox, the checkbox variable is assigned a boolean True worth.
 NiceGUI | Output

Right here we see all the choice components that we have now created. Click on on the Dropdown Choice, a dropdown motion takes place permitting us to pick out one of many choices. These are simply among the components that we have now regarded into. NiceGUI provides a variety of components to work with in varied situations.

Person Inputs and Worth Bindings

On this part, we’ll have a look at the features that may enable customers to enter textual content or numerical information within the UI.

from nicegui import ui

ui.enter(label="Textual content",
         on_change=lambda e: text_input.set_text('Your Enter: ' + e.worth))
text_input = ui.label()

ui.quantity(label="Quantity", worth=3.1415, format="%.2f",
          on_change=lambda e: number_input.set_text('Your Enter: ' + str(e.worth)))
number_input = ui.label()


The features within the above code embody:

  • enter(): This perform when used, will create an empty textual content field the place the person can kind the info. It has a variable referred to as “label“, which tells what kind of enter it’s anticipating from the person. Each time the person enters an enter within the Enter field, the .set_text() perform of ui.label() prompts and shows the typed textual content on the display screen.
  • quantity(): This perform works equally to the enter() perform, the one distinction is that this perform takes numbers as a substitute of textual content

The code when run, will produce the next output


Discover UI Elemts in NiceGUI

Within the pictures above, the person’s enter is displayed on the display screen when entered into the enter discipline. NiceGUI permits binding values between totally different UI components, permitting seamless integration. Let’s discover an instance.

from nicegui import ui

ui.label("Worth Bindings")

with ui.row():
    radio1 =[1, 2, 3], worth=1).props('inline')
    toggle = ui.toggle({1: 'A', 2: 'B', 3: 'C'}).props('inline').bind_value(radio1, 'worth')

Within the code above, we have now two components (radio and toggle) grouped horizontally utilizing the ui.row() factor. To group them vertically, we will use ui.column(). The toggle() perform consists of the variable bind_values(), which connects the radio choices to the toggle choices. For instance, choosing 1 within the radio switches the toggle to A, and choosing 2 switches it to B.


Within the above Photographs, we will clearly have a look at the worth bindings between the 2 UI components in motion. Equally, bind_value() perform is able to working in several UI components offered by the NiceGUI.

Information Components and Graphs

On this part, we’ll see the Information Components offered by the NiceGUI. We are going to discover how you can show tables and charts on the UI utilizing NiceGUI. Firstly, we’ll begin with displaying tabular information by NiceGUI. The code for displaying this shall be:

from nicegui import ui

columns = [
    {'name': 'Name', 'label': 'Name', 'field': 'Name', 'required': True, 'align': 'center'},
    {'name': 'Employee-ID', 'label': 'Employee-ID', 'field': 'Employee-ID'},
    {'name': 'experience', 'label': 'experience', 'field': 'experience'}
rows = [
    {'Name': 'Akash', 'Employee-ID':1230, 'experience': 5},
    {'Name': 'Karen', 'Employee-ID': 1245, 'experience': 10},
    {'Name': 'Thanish', 'Employee-ID': 1980, 'experience': 9},
    {'Name': 'Samuel', 'Employee-ID': 1120, 'experience': 8},

ui.desk(title="Worker Information",columns=columns, rows=rows, row_key='Identify')

To show a desk, specify the column names within the columns record. Every column is represented by a dictionary throughout the record. Embrace the title, label, and discipline values for every column (sometimes the identical for all). Further key-value pairs could be offered as wanted. For instance, the “required:True” key-value pair ensures that the Identify column requires a worth for any new factor added to the desk. The “align”:”middle” aligns your entire row underneath that column title within the middle alignment.

The following is the rows record. The rows record is the record of dictionaries containing values for the above columns. Right here utilizing the sector names, we offer the discipline:worth pairs within the dictionary. Then with the ui.desk() perform, we show the desk to the UI. Right here we may give the title title for the desk. The row_key has the column title that accommodates distinctive values. Working this code will give the next output


Pandas DataFrame with NiceGUI

We are able to even show the Pandas Dataframe with NiceGUI. With the desk() perform itself it’s attainable to show the Pandas Information.

import pandas as pd
from nicegui import ui

information = pd.DataFrame(information={'Identify': ["Karan", "Shoaib"], 'Position': ["Developer", "Designer"]})
    columns=[{'name': column, 'label': column, 'field': column} for column in data.columns],

Now we’ll have a look at how you can show graphs on the display screen utilizing NiceGUI. With NiceGUI features, we will show plots made by matplotlib on the display screen. For this, we work with the pyplot() perform within the NiceGUI, which shows matplotlib graphs on the UI. The code for this shall be:

import matplotlib
import numpy
from nicegui import ui

with ui.pyplot(figsize=(3, 2)):
    x = numpy.linspace(0.0, 10000.0, 10)
    y = numpy.log(x)
    matplotlib.pyplot.title('Log Graph')
    matplotlib.pyplot.plot(x, y, '-')

Right here we use the with command adopted by the ui.pyplot() perform. We even cross the fig measurement to the perform. Now underneath the with, we write the code for plotting a graph by matplotlib. Right here we have now written a easy graph, the place the x-axis accommodates the values from 0 to 10000 with a stepsize of 10 and the y-axis accommodates the log values for them. The output when the code run shall be:


You may see the plot on the above display screen. With NiceGUI, we not solely can show matplotlib graphs, however we even can show graphs made by Plotly too, which creates interactive graphs.

UseCases and Functions

NiceGUI just like different Net Frameworks, could be useful throughout totally different improvement situations, like:

  • Machine Studying UI: With its multitude of components, NiceGUI emerges as top-of-the-line libraries for creating Frontend elements for Machine Studying Functions. The totally different choice components offered by NiceGUI will actually turn out to be useful when coping with ML functions that want many inputs from customers
  • Fast Prototyping: Not writing HTML, CSS, or Javascript recordsdata and having the ability to code every little thing from displaying textual content to choice packing containers to graphs solely in NiceGUI, reduces the massive quantity of effort for creating fast prototypes. And the quantity of components offered by NiceGUI helps in creating full-fledged working prototypes.
  • Dashboard Functions: NiceGUI permits builders to show totally different charts simply by its chart components. One good factor to notice is that NiceGUI may even present 3D Scenes. It even comes with progress bars to showcase the loading of the info. It has totally different information components to show several types of Python information sorts on the display screen.


Builders use NiceGUI, a Python Net Framework, to create web site functions. NiceGUI gives the required instruments to develop a full-fledged web site with all of the frontend elements fully in Python. We have now even seen totally different components of NiceGUI and how you can take person inputs. Lastly, we have now gone by bind values to study we will bind between totally different UI components

Some key takeaways from this text embody:

  • NiceGUI comes with totally different ready-to-use UI components.
  • It gives customers to create multi-page web sites.
  • NiceGUI comes with information binding constructed into it.
  • Primarily based on FastAPI to serve the content material to the online.

The media proven on this article just isn’t owned by Analytics Vidhya and is used on the Creator’s discretion.