Skip to main content

Pyforms is a Python framework to develop GUI applications based on pyqt

Project description

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

Pyforms GUI

Pyforms GUI is a software layer, part of the Pyforms main library. This layer implements the execution of a Pyforms application as Windows GUI.

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.

Examples of applications developed in Pyforms GUI

Installation

Check the documentation at pyforms.readthedocs.org and pyforms-gui.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 ModelAdmin) 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

class ComputerVisionAlgorithm(BaseWidget):

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

        self.set_margin(10)

        #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


if __name__ == '__main__':

    from pyforms import start_app
    start_app(ComputerVisionAlgorithm)

Result of runnning the application in the terminal:

$> python test.py

ScreenShot

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

PyForms GUI-4.0.6.tar.gz (85.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

PyForms_GUI-4.0.6-py3-none-any.whl (126.1 kB view details)

Uploaded Python 3

PyForms_GUI-4.0.6-py2-none-any.whl (126.1 kB view details)

Uploaded Python 2

File details

Details for the file PyForms GUI-4.0.6.tar.gz.

File metadata

  • Download URL: PyForms GUI-4.0.6.tar.gz
  • Upload date:
  • Size: 85.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/2.7.15

File hashes

Hashes for PyForms GUI-4.0.6.tar.gz
Algorithm Hash digest
SHA256 73239e6fc9b1eabe1a69f85ce4842d611d97a0dc5aad092e5b5fe7dc7ddb7d1c
MD5 2e8654e7fd14f65807cd3a975fe405d6
BLAKE2b-256 a6c39587d67221e3b059d8bb3d623685cd99cac674e14b418a4e282382331edc

See more details on using hashes here.

File details

Details for the file PyForms_GUI-4.0.6-py3-none-any.whl.

File metadata

  • Download URL: PyForms_GUI-4.0.6-py3-none-any.whl
  • Upload date:
  • Size: 126.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.6

File hashes

Hashes for PyForms_GUI-4.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 3cc7555ae4ddef728ce5d604b3c2874d89f19cf11d35e22f87a391bf2d562e0e
MD5 4174d48906581c9c7b9202990442e8be
BLAKE2b-256 1ce63f1b5ab32ece1f9cc2ec3bbfb4a07732cbb86e0f6dc628595ef16e1fcfd9

See more details on using hashes here.

File details

Details for the file PyForms_GUI-4.0.6-py2-none-any.whl.

File metadata

  • Download URL: PyForms_GUI-4.0.6-py2-none-any.whl
  • Upload date:
  • Size: 126.1 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/2.7.15

File hashes

Hashes for PyForms_GUI-4.0.6-py2-none-any.whl
Algorithm Hash digest
SHA256 3c13b68e25cb1c685caa2115adc22808b83fa12daf1da32a91d89038b3726bde
MD5 8a75015ab749c99257910bc5fda0a369
BLAKE2b-256 cc96be43338b38e32331a063f53810731a22037e87ed49682324dd14e297b02a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page