You can write custom Python code to interact with components and queries. To do that, you just need to create a new query and select **Run Python Code** from the available datasources.
#### Example: Using Python code to trigger component specific actions
- Let's drag a **button** and a **text** widget onto the canvas. We will set a text on the text component and trigger button click event from the Python query.
- Click on the `+` on the query panel to create a query and select **Run Python code** from the available datasources
- Let's write the code in **Python Editor** and save the query:
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def myfunc(self):
return "Hello my name is " + self.name
p1 = Person(tj_globals.currentUser.firstName, 36)
components.text1.setText(p1.myfunc())
components.button1.click()
```
- The code above has a function `myfunc` which returns a string and we using the component specific action to set the **text component**'s value from the Python query. We are also triggering the button click using `components.button1.click()`
:::tip
- ToolJet's global variables can be accessed using **tj_globals**. ex: `tj_globals.currentUser.firstName`
- As of now, Run Python code only supports the [Python standard library](https://docs.python.org/3/library/) only.
- Add an event handler to the button - Select **On Click** event, **Show alert** action, and set a success message `Triggered using RunPy`. This will show a success alert popup whenever the button click event is triggered from the Python code.
- For the text component, we don't have to edit any property since we are changing the value directly from the Python code.