> ## Documentation Index
> Fetch the complete documentation index at: https://docs.projectreal.gg/llms.txt
> Use this file to discover all available pages before exploring further.

# ImGuiWindow.Button

> Appends a button element to an ImGuiWindow and stores the callback. When the rendered button is clicked, the callback is queued and later invoked without arguments. The method returns the same ImGuiWindow object.

Appends a button element to an ImGuiWindow and stores the callback. When the rendered button is clicked, the callback is queued and later invoked without arguments. The method returns the same ImGuiWindow object.

## Syntax

```lua theme={null}
ImGuiWindow.Button(window: ImGuiWindow, label: string, onClick: function): ImGuiWindow
```

## Arguments

| Name      | Type          | Required | Description                                                                                     |
| --------- | ------------- | -------- | ----------------------------------------------------------------------------------------------- |
| `window`  | `ImGuiWindow` | Yes      | ImGuiWindow object returned by imgui.create. A destroyed or invalid window raises a Lua error.  |
| `label`   | `string`      | Yes      | Button label string passed to the rendered ImGui button.                                        |
| `onClick` | `function`    | Yes      | Function stored for this button and invoked without arguments after a click event is processed. |

## Returns

| Name     | Type          | Description                                                 |
| -------- | ------------- | ----------------------------------------------------------- |
| `window` | `ImGuiWindow` | The same ImGuiWindow object, allowing chained method calls. |

## Types

### ImGuiWindow

Handle returned by imgui.create. Control-building methods return the same handle so calls can be chained.

| Name               | Type                                                                                                                                            | Required | Description                                                                                         |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | -------- | --------------------------------------------------------------------------------------------------- |
| `Button`           | `(label: string, onClick: () -> ()) -> ImGuiWindow`                                                                                             | Yes      | Appends a button and queues the callback with no arguments after a click.                           |
| `Checkbox`         | `(label: string, checked: any, onChange: (boolean) -> ()) -> ImGuiWindow`                                                                       | Yes      | Appends a checkbox initialized from the checked value.                                              |
| `CollapsingHeader` | `(label: string, content: (ImGuiWindow) -> ()) -> ImGuiWindow`                                                                                  | Yes      | Immediately runs content to append elements that render under a collapsible header.                 |
| `ColorPicker`      | `(label: string, red: number?, green: number?, blue: number?, alpha: number?, onChange: (number, number, number, number) -> ()) -> ImGuiWindow` | Yes      | Appends a ColorEdit4-backed RGBA editor; onChange is read from argument 7.                          |
| `InputText`        | `(label: string, text: string?, onChange: (string) -> ()) -> ImGuiWindow`                                                                       | Yes      | Appends a single-line InputText using a fixed 256-byte buffer; onChange is argument 4.              |
| `SameLine`         | `() -> ImGuiWindow`                                                                                                                             | Yes      | Appends a SameLine layout marker that calls same-line layout during rendering.                      |
| `Separator`        | `() -> ImGuiWindow`                                                                                                                             | Yes      | Appends a Separator marker that calls a separator during rendering.                                 |
| `SliderFloat`      | `(label: string, value: number, minimum: number, maximum: number, onChange: (number) -> ()) -> ImGuiWindow`                                     | Yes      | Appends a SliderFloat element and queues onChange with one Lua number when the value changes.       |
| `SliderInt`        | `(label: string, value: integer, minimum: integer, maximum: integer, onChange: (number) -> ()) -> ImGuiWindow`                                  | Yes      | Appends a SliderInt element and queues onChange with one Lua number when the integer value changes. |
| `Text`             | `(text: string) -> ImGuiWindow`                                                                                                                 | Yes      | Appends a non-interactive text element.                                                             |
| `destroy`          | `() -> ()`                                                                                                                                      | Yes      | Removes the window and releases its registered callbacks.                                           |
