--- title: "HMI Builder for Code-Free and Python" slug: "hmi-builder-for-code-free-and-python" updated: 2026-01-30T19:21:20Z published: 2026-01-30T19:21:20Z canonical: "docs.vention.com/hmi-builder-for-code-free-and-python" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.vention.com/llms.txt > Use this file to discover all available pages before exploring further. # HMI Builder for Code-Free and Python HMI Builder allows the rapid creation of Operator Interfaces. ![](https://cdn.document360.io/3eee4d14-5ca0-4ea6-b426-1c19393e6a5e/Images/Documentation/HMI Builder .png) Operator interface created using HMI Builder ![](https://cdn.document360.io/3eee4d14-5ca0-4ea6-b426-1c19393e6a5e/Images/Documentation/HMI Builder_Edit Mode.png) HMI Builder in edit view The following widgets are available in HMI Builder: - **Edit Mode**: toggles between edit and play mode. The application can be launched in Play mode. - **Group**: Allows the creation of additional pages when the plus icon is selected. - **Information Console**: Shows message in the console when an Add Message command is read, - **Button**: Sends an MQTT topic that can be used within the application to trigger events. For more information about Events and MQTT , [click here](/technicaldocumentation/docs/using-communication-protocols-with-machinelogic). - **Variable Input**: Sets the value of a variable from the Operator Interface - **Variable Display**: Displays the current value of a variable. - **Digital Input Display**: Displays the current state of a digital Input. - **Label**: Add text to the operator interface > [!WARNING] > The Variable Input and variable Display widgets are only available in Code-free apps #### Integrating HMI Builder in a Code-Free Application In code-free applications, HMI builder can be used to send MQTT topics and events that can be received by the application. Use the **Button** widget in conjunction with **Wait for MQTT message** instruction or configure a **State machine transition** to fire on the reception of an MQTT topic. It is also possible to assign an MQTT message to a variable (using the result variable input field) this can be handy when process parameters or communication strings are received from another device present on the network. ![](https://cdn.document360.io/3eee4d14-5ca0-4ea6-b426-1c19393e6a5e/Images/Documentation/wait for mqtt message.png) Wait for MQTT Message instruction ![Configuration interface for an event button labeled 'Start Cycle' in a machine application.](https://cdn.document360.io/3eee4d14-5ca0-4ea6-b426-1c19393e6a5e/Images/Documentation/configuring a button.png) Configurating a button to send an MQTT topic and message #### Integrating HMI Builder in a Python Application HMI builder uses the MQTT protocol to communicate between the automation control code and the Operator interface. To learn more about HMI builder To link a functionality in the application with an MQTT event outputted by HMI builder, the `on_mqtt_event` method must be used. [Click here](/technicaldocumentation/docs/vention-python-api) for more information. Here is example for using this method when the “Start” topic is received from the Operator Interface: ```python # Functions        def Start_Conveyor(topic, message):        my_conveyor.move_continuous_async(250, 1000) # speed of 250 mm/s and acceleration of 1000 mm/s^2        ### Program ###        machine.on_mqtt_event('Start', Start_Conveyor) # start event received from operator button press ``` In this example, we begin by creating a function containing both a `topic` and `message` argument. We then use the `machine.on_mqtt_event` to link the previously defined function as a callback when the ‘Start’ event is received