{% extends "!layout.html" %} {%- block content %}
Moho is an open source software framework for the rapid development of Rich Internet Applications written in Python. Inspired by ipywidgets, - famous package for fast building of GUI components for Jupyter notebooks and Kivy project - cross-platform Python library for rapid development of applications with multitouch support, Moho combines the ideas of both libraries. The GUI components of an application are developed in Python, a knowledge of HTML and Javascript for general cases is not required. The event-slot model, borrowed from Kivy project, can be used effectively for remote (browser-server) and local (server components) events. If you are familiar with Kivy framework you will notice that design of Moho applications is very similar to Kivy with the only difference, instead of running an OpenGL based desktop application you run a server-client application.
Moho is written in Python and Cython, with Tornado running a server application and Bootstrap as a base for the frontend components with rich variety of widgets. The 2D (SVG) and 3D (X3dom) graphics support together with Matplotlib library integration makes Moho a perfect choice for scientific or instrumental control applications.
First application » Installation » Live Showcase (WASM) » Check on gitlab »
Moho provides support for standard Bootstrap buttons and toolbars with vertical and horizontal orientation. Tooltips or Popovers are activated using corresponding Button properties.
See the full showcase gallery for every widget screen.
The CodeInput widget is a dual-layer monospace editor with server-side Pygments highlighting (light and monokai themes).
Matplotlib and Plotly are integrated into Moho. Matplotlib figures are rendered on the server; Plotly canvases stream interactive figures to the browser. Plots for each client are rendered in their own canvas instances.
For 2D graphics Moho uses vector graphics, i.e. SVG. Each SVG shape, like Rectangle or Circle has its python implementation with corresponding attributes of this shape, like centre coordinates or radius. Developer can easily bind this attributes to other GUI components, like sliders, for example. The events are bound on server side and all clients will get an update for changed SVG shape.
X3dom library is used for 3D graphics. X3dom components have the same look and feel as SVG components and fit perfectly to Moho concept.