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)