Skip to main content

Important
If you find this project useful, please, do not forget to star it it.

Pyforms Web

Pyforms Web is a software layer, part of the Pyforms main library. This layer implements the execution of a Pyforms application in a web browser.

Diagram

Pyforms

Pyforms is a Python 3 cross-enviroment framework that aims the boost the development productivity. The library provides an API in Python to develop applications that can be executed in Windows GUI mode, Web mode, or in Terminal mode.

More @ Diagram

Advantages

  • With a minimal API, interfaces are easily defined using a short Python code.
  • Avoid the constant switching between the GUI designers and the Python IDE.
  • It is designed to allow the coding of advanced functionalities with a minimal effort.
  • The code is organized in modules and prepared to be reused by other applications.
  • It makes the applications maintenance easier.
  • Turn the prototyping much easier and fast.
  • Due to its simplicity it has a low learning curve.

Installation

Check the documentation at pyforms.readthedocs.org and pyforms-web.readthedocs.org

Rationale behind the framework

The development of this library started with the necessity of allowing users with low programming skills to edit parameters from my python scripts. The idea was to transform scripts which had already been developed into GUI applications with a low effort and in a short time.

For example in my computer vision applications in the majority of the times there were variables that had to be set manually in the scripts for each video, to adjust the thresholds, blobs sizes, and other parameters to the environment light conditions... To test each set of parameters the script had to be executed. With GUI applications, users would be able to set the parameters using a GUI interface and visualize the results instantly without the need of restarting the script. That was the idea.

After looking into the several python options for GUI interfaces, PyQt was the one that seemed the best tool for a fast development with the QtDesigner, but after a while developing in Qt, switching between the designer and the python IDE was becoming too costly in terms of time because the interfaces were constantly evolving.

Being a Django developer, I did get inspiration on it for this framework. In the Django Models we just need to define the type of variables and their disposition in the form (in ModelAdminWidget) to generate a HTML form for data edition. For the GUIs that I wanted to build in my python scripts, I would like to have the same simplicity, so I could focus on the algorithms and not on GUIs developing.

The result was the simplicity you can see in the example below:

from pyforms.basewidget import BaseWidget
from pyforms.controls   import ControlFile
from pyforms.controls   import ControlText
from pyforms.controls   import ControlSlider
from pyforms.controls   import ControlPlayer
from pyforms.controls   import ControlButton

from confapp import conf

class ComputerVisionAlgorithm(BaseWidget):

    UID = 'cva'
    TITLE = 'Computer vision algorithm'

    LAYOUT_POSITION = conf.ORQUESTRA_HOME

    ORQUESTRA_MENU = 'left'
    ORQUESTRA_MENU_ORDER = 10

    def __init__(self, *args, **kwargs):
        super().__init__('Computer vision algorithm example')


        #Definition of the forms fields
        self._videofile  = ControlFile('Video')
        self._outputfile = ControlText('Results output file')
        self._threshold  = ControlSlider('Threshold', default=114, minimum=0, maximum=255)
        self._blobsize   = ControlSlider('Minimum blob size', default=110, minimum=100, maximum=2000)
        self._player     = ControlPlayer('Player')
        self._runbutton  = ControlButton('Run')

        #Define the function that will be called when a file is selected
        self._videofile.changed_event     = self.__videoFileSelectionEvent
        #Define the event that will be called when the run button is processed
        self._runbutton.value       = self.__runEvent
        #Define the event called before showing the image in the player
        self._player.process_frame_event    = self.__process_frame

        #Define the organization of the Form Controls
        self._formset = [
            ('_videofile', '_outputfile'),
            '_threshold',
            ('_blobsize', '_runbutton'),
            '_player'
        ]


    def __videoFileSelectionEvent(self):
        """
        When the videofile is selected instanciate the video in the player
        """
        self._player.value = self._videofile.value

    def __process_frame(self, frame):
        """
        Do some processing to the frame and return the result frame
        """
        return frame

    def __runEvent(self):
        """
        After setting the best parameters run the full algorithm
        """
        pass

Result of the application running in a web browser:

ScreenShot

Metadata

Release files for PyForms-Web 4.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for PyForms-Web 4.2.0
File Size Uploaded
PyForms-Web-4.2.0.tar.gz 57.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for PyForms-Web 4.2.0
File Interpreter ABI Platform
PyForms_Web-4.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.7 MB

Release files / PyForms-Web-4.2.0.tar.gz

Download URL PyForms-Web-4.2.0.tar.gz
Size 57.1 kB
Tags Source
SHA-256 checksum
How to use checksums
97ae16c4bf96d1ccee9313396d21c5720d38c99a20e556d2ddfcc969c9b17fe2
BLAKE2b-256 checksum
How to use checksums
e520d9ae4d3943444f02e4654258eb086c240ddafde1c2cf8fc3326c3601d78d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2.post20191203 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.5

Release files / PyForms_Web-4.2.0-py3-none-any.whl

Download URL PyForms_Web-4.2.0-py3-none-any.whl
Size 1.6 MB
Tags Python 3
SHA-256 checksum
How to use checksums
50be85dfe89b32f998b21311455851c4bfd43e88d335f3d836786a8fdf8998a4
BLAKE2b-256 checksum
How to use checksums
f6adcd068056abb20ec29789b52f065e81fac3eb86e769aeb717e1e6df35e90c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2.post20191203 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.5

Release history Release notifications | RSS feed

This release

4.2.0 This release

2 release files

4.1.5

2 release files

4.1.4

2 release files

4.1.3

2 release files

4.1.2

2 release files

4.1.1

2 release files

4.1.0

2 release files

4.0.7

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page