Skip to main content
v1.2.0

Interactive Events

LightningChart Python Trader supports comprehensive event handling for both drawing tools and chart interactions. This enables building responsive, interactive trading applications where charts can react to user actions in real-time.

Events provide detailed information about user interactions, including cursor positions, clicked elements, and mouse button states. All events use a consistent callback pattern that is easy to integrate into Python applications.


Drawing Tool Events

All drawing tools support pointer events that trigger when users interact with them. These events are available for trend lines, Fibonacci tools, channels, shapes, and all other drawing tools.

Available Drawing Tool Events

Each drawing tool supports the following event methods:

  • on_pointer_down(callback) - Triggered when clicking on the drawing tool
  • on_pointer_up(callback) - Triggered when releasing the mouse button over the tool
  • on_pointer_enter(callback) - Triggered when the cursor enters the tool's area
  • on_pointer_leave(callback) - Triggered when the cursor exits the tool's area
  • on_drawing_tool_moved(callback) - Triggered when the tool is moved or resized

Drawing Tool Event Data

When a drawing tool event is triggered, the callback function receives an event dictionary containing:

{
'x': float, # Chart X coordinate (data point index)
'y': float, # Chart Y coordinate (price level)
'xClient': float, # Screen X position in pixels
'yClient': float, # Screen Y position in pixels
'button': int, # Mouse button: 0=left, 1=middle, 2=right
'isControlPoint': bool, # True if clicked on a draggable endpoint
}

Example: Drawing Tool Events

# Define event handler
def on_down(evt):
print('[Python] pointer DOWN event:', evt)

# Subscribe to the event
trend_line.on_pointer_down(on_down)

# Open the chart
trader.open()

Unsubscribing from Events

To stop listening to an event, use the corresponding off_* method:

# Unsubscribe from pointer down event
trend_line.off_pointer_down()

# Unsubscribe from pointer enter event
trend_line.off_pointer_enter()

Chart-Level Pointer Events

In addition to drawing tool events, the chart itself supports pointer event tracking. These events are useful for building custom tooltips, tracking cursor position, or implementing custom interaction logic.

Available Chart Events

  • on_pointer_down(callback) - Triggered when clicking anywhere on the chart
  • on_pointer_up(callback) - Triggered when releasing the mouse button over the chart
  • on_pointer_move(callback) - Triggered when moving the cursor over the chart

Chart Event Data

Chart-level events provide different coordinate information than drawing tool events:

{
'x': float, # Horizontal Axis value (where the pointer event occurred)
'y': float, # Vertical Axis value (where the pointer event occurred)
'pixelsX': float, # Pixels from left edge of chart canvas
'pixelsY': float, # Pixels from top edge of chart canvas
'button': int, # Mouse button: 0=left, 1=middle, 2=right
}

Example: Chart Pointer Events

# Event handlers
def on_down(evt):
print('[Python] pointer DOWN event:', evt)

# Subscribe to events
trader.on_pointer_down(on_down)

# Open the chart
trader.open()

Example: Custom Price Tracker

This example creates a simple price tracker that logs the cursor position:

# Set time range
start_time = datetime(2020, 1, 1)
end_time = datetime(2020, 12, 31)
trader.set_time_range(start_time, end_time)

def track_price(event):
data_index = int(round(event['x']))
price = event['y']

if data_index >= 0:
print(f"Data point #{data_index}: Cursor at ${price:.2f}")

trader.on_pointer_move(track_price)

Unsubscribing from Chart Events

# Stop listening to pointer move events
trader.off_pointer_move()

# Stop listening to pointer down events
trader.off_pointer_down()

# Stop listening to pointer up events
trader.off_pointer_up()

Example

Link to the examples