Event Handling#
The Button Widget provides a mechanism to issue Kit commands or trigger events in response to mouse clicks. These events can be used with ActionGraph. Alternatively, events can be handled in Python with a Custom Application Event.
Actions#
Kit Commands (Actions) can be issued from buttons to execute a variety of tasks.
The Action option for the âclicked_fnâ has an auto-complete dropdown of commands
The Commands Utils is a valuable extension for a history and library of Kit Commands
ActionGraph Events#
An ActionGraph event can be used to respond to a buttonâs mouse clicks. In this example an ActionGraph node âRotate to Orientationâ is used to rotate a cone in the scene. A Custom Event is created in ActionGraph to trigger the rotation node. Once the event has been defined it can then be set in the Buttonâs âclicked_fnâ property.
Note
The âOnly Simulate On Playâ checkbox is deliberately unchecked in the video since when this is enabled the event only triggers when the simulation is playing.
Python Events#
Custom Application Events allow your UI to trigger python script(s). After defining an ActionGraph Custom Event as described above, you can use it in python like this:
import carb.events
import omni.kit.app
# event "MY_CUSTOM_EVENT" defined in ActionGraph
MY_CUSTOM_EVENT = carb.events.type_from_string("omni.graph.action.MY_CUSTOM_EVENT")
def on_event(e):
print("MY_CUSTOM_EVENT triggered with payload: ", e.payload)
bus = omni.kit.app.get_app().get_message_bus_event_stream()
event_sub = bus.create_subscription_to_pop_by_type(MY_CUSTOM_EVENT, on_event)