### Class

# Gtk ToggleButton

#### Description [src]

    class Gtk.ToggleButton : Gtk.Button
      implements Gtk.Accessible, Gtk.Actionable, Gtk.Buildable, Gtk.ConstraintTarget {
      /* No available fields */
    }

Shows a button which remains “pressed-in” when clicked.

Clicking again will cause the toggle button to return to its normal state.

A toggle button is created by calling either `gtk_toggle_button_new()` or `gtk_toggle_button_new_with_label()`. If using the former, it is advisable to pack a widget, (such as a `GtkLabel` and/or a `GtkImage`), into the toggle button’s container. (See `GtkButton` for more information).

The state of a `GtkToggleButton` can be set specifically using `gtk_toggle_button_set_active()`, and retrieved using `gtk_toggle_button_get_active()`.

## Grouping

Toggle buttons can be grouped together, to form mutually exclusive groups - only one of the buttons can be toggled at a time, and toggling another one will switch the currently toggled one off.

To add a `GtkToggleButton` to a group, use `gtk_toggle_button_set_group()`.

## CSS nodes

`GtkToggleButton` has a single CSS node with name button. To differentiate it from a plain `GtkButton`, it gets the `.toggle` style class.

## Accessibility

`GtkToggleButton` uses the `GTK_ACCESSIBLE_ROLE_TOGGLE_BUTTON` role.

## Creating two `GtkToggleButton` widgets.

    static void
    output_state (GtkToggleButton *source,
                  gpointer         user_data)
    {
      g_print ("Toggle button "%s" is active: %s",
               gtk_button_get_label (GTK_BUTTON (source)),
               gtk_toggle_button_get_active (source) ? "Yes" : "No");
    }

    static void
    make_toggles (void)
    {
      GtkWidget *window, *toggle1, *toggle2;
      GtkWidget *box;
      const char *text;

      window = gtk_window_new ();
      box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);

      text = "Hi, I’m toggle button one";
      toggle1 = gtk_toggle_button_new_with_label (text);

      g_signal_connect (toggle1, "toggled",
                        G_CALLBACK (output_state),
                        NULL);
      gtk_box_append (GTK_BOX (box), toggle1);

      text = "Hi, I’m toggle button two";
      toggle2 = gtk_toggle_button_new_with_label (text);
      g_signal_connect (toggle2, "toggled",
                        G_CALLBACK (output_state),
                        NULL);
      gtk_box_append (GTK_BOX (box), toggle2);

      gtk_window_set_child (GTK_WINDOW (window), box);
      gtk_window_present (GTK_WINDOW (window));
    }

#### Ancestors

- GtkButton
- GtkWidget
- GInitiallyUnowned
- GObject

#### Implements

- GtkAccessible
- GtkActionable
- GtkBuildable
- GtkConstraintTarget

#### Constructors

###### gtk_toggle_button_new

Creates a new toggle button.

###### gtk_toggle_button_new_with_label

Creates a new toggle button with a text label.

###### gtk_toggle_button_new_with_mnemonic

Creates a new `GtkToggleButton` containing a label.

#### Instance methods

###### gtk_toggle_button_get_active

Queries a `GtkToggleButton` and returns its current state.

###### gtk_toggle_button_set_active

Sets the status of the toggle button.

###### gtk_toggle_button_set_group

Adds `self` to the group of `group`.

###### gtk_toggle_button_toggled

Emits the ::toggled signal on the `GtkToggleButton`.

deprecated: 4.10

##### Methods inherited from GtkButton (12)

###### gtk_button_get_can_shrink

Retrieves whether the button can be smaller than the natural size of its contents.

since: 4.12

###### gtk_button_get_child

Gets the child widget of `button`.

###### gtk_button_get_has_frame

Returns whether the button has a frame.

###### gtk_button_get_icon_name

Returns the icon name of the button.

###### gtk_button_get_label

Fetches the text from the label of the button.

###### gtk_button_get_use_underline

Gets whether underlines are interpreted as mnemonics.

###### gtk_button_set_can_shrink

Sets whether the button size can be smaller than the natural size of its contents.

since: 4.12

###### gtk_button_set_child

Sets the child widget of `button`.

###### gtk_button_set_has_frame

Sets the style of the button.

###### gtk_button_set_icon_name

Adds a `GtkImage` with the given icon name as a child.

###### gtk_button_set_label

Sets the text of the label of the button to `label`.

###### gtk_button_set_use_underline

Sets whether to use underlines as mnemonics.

##### Methods inherited from GtkWidget (164)

Please see GtkWidget for a full list of methods.

##### Methods inherited from GObject (43)

Please see GObject for a full list of methods.

##### Methods inherited from GtkAccessible (21)

###### gtk_accessible_announce

Requests the user’s screen reader to announce the given message.

since: 4.14

###### gtk_accessible_get_accessible_id

Retrieves the accessible identifier for the accessible object.

since: 4.22

###### gtk_accessible_get_accessible_parent

Retrieves the accessible parent for an accessible object.

since: 4.10

###### gtk_accessible_get_accessible_role

Retrieves the accessible role of an accessible object.

###### gtk_accessible_get_at_context

Retrieves the implementation for the given accessible object.

since: 4.10

###### gtk_accessible_get_bounds

Queries the coordinates and dimensions of this accessible.

since: 4.10

###### gtk_accessible_get_first_accessible_child

Retrieves the first accessible child of an accessible object.

since: 4.10

###### gtk_accessible_get_next_accessible_sibling

Retrieves the next accessible sibling of an accessible object.

since: 4.10

###### gtk_accessible_get_platform_state

Queries a platform state, such as focus.

since: 4.10

###### gtk_accessible_reset_property

Resets the accessible property to its default value.

###### gtk_accessible_reset_relation

Resets the accessible relation to its default value.

###### gtk_accessible_reset_state

Resets the accessible state to its default value.

###### gtk_accessible_set_accessible_parent

Sets the parent and sibling of an accessible object.

since: 4.10

###### gtk_accessible_update_next_accessible_sibling

Updates the next accessible sibling.

since: 4.10

###### gtk_accessible_update_platform_state

Informs ATs that the platform state has changed.

since: 4.18

###### gtk_accessible_update_property

Updates a list of accessible properties.

###### gtk_accessible_update_property_value

Updates an array of accessible properties.

###### gtk_accessible_update_relation

Updates a list of accessible relations.

###### gtk_accessible_update_relation_value

Updates an array of accessible relations.

###### gtk_accessible_update_state

Updates a list of accessible states.

###### gtk_accessible_update_state_value

Updates an array of accessible states.

##### Methods inherited from GtkActionable (6)

###### gtk_actionable_get_action_name

Gets the action name for `actionable`.

###### gtk_actionable_get_action_target_value

Gets the current target value of `actionable`.

###### gtk_actionable_set_action_name

Specifies the name of the action with which this widget should be associated.

###### gtk_actionable_set_action_target

Sets the target of an actionable widget.

###### gtk_actionable_set_action_target_value

Sets the target value of an actionable widget.

###### gtk_actionable_set_detailed_action_name

Sets the action-name and associated string target value of an actionable widget.

##### Methods inherited from GtkBuildable (1)

###### gtk_buildable_get_buildable_id

Gets the ID of the `buildable` object.

#### Properties

###### Gtk.ToggleButton:active

If the toggle button should be pressed in.

###### Gtk.ToggleButton:group

The toggle button whose group this widget belongs to.

##### Properties inherited from GtkButton (6)

###### Gtk.Button:can-shrink

Whether the size of the button can be made smaller than the natural size of its contents.

since: 4.12

###### Gtk.Button:child

The child widget.

###### Gtk.Button:has-frame

Whether the button has a frame.

###### Gtk.Button:icon-name

The name of the icon used to automatically populate the button.

###### Gtk.Button:label

Text of the label inside the button, if the button contains a label widget.

###### Gtk.Button:use-underline

If set, an underline in the text indicates that the following character is to be used as mnemonic.

##### Properties inherited from GtkWidget (35)

###### Gtk.Widget:can-focus

Whether the widget or any of its descendents can accept the input focus.

###### Gtk.Widget:can-target

Whether the widget can receive pointer events.

###### Gtk.Widget:css-classes

A list of css classes applied to this widget.

###### Gtk.Widget:css-name

The name of this widget in the CSS tree.

###### Gtk.Widget:cursor

The cursor used by `widget`.

###### Gtk.Widget:focus-on-click

Whether the widget should grab focus when it is clicked with the mouse.

###### Gtk.Widget:focusable

Whether this widget itself will accept the input focus.

###### Gtk.Widget:halign

How to distribute horizontal space if widget gets extra space.

###### Gtk.Widget:has-default

Whether the widget is the default widget.

###### Gtk.Widget:has-focus

Whether the widget has the input focus.

###### Gtk.Widget:has-tooltip

Enables or disables the emission of the `GtkWidget::query-tooltip` signal on `widget`.

###### Gtk.Widget:height-request

Overrides for height request of the widget.

###### Gtk.Widget:hexpand

Whether to expand horizontally.

###### Gtk.Widget:hexpand-set

Whether to use the `hexpand` property.

###### Gtk.Widget:layout-manager

The `GtkLayoutManager` instance to use to compute the preferred size of the widget, and allocate its children.

###### Gtk.Widget:limit-events

Makes this widget act like a modal dialog, with respect to event delivery.

since: 4.18

###### Gtk.Widget:margin-bottom

Margin on bottom side of widget.

###### Gtk.Widget:margin-end

Margin on end of widget, horizontally.

###### Gtk.Widget:margin-start

Margin on start of widget, horizontally.

###### Gtk.Widget:margin-top

Margin on top side of widget.

###### Gtk.Widget:name

The name of the widget.

###### Gtk.Widget:opacity

The requested opacity of the widget.

###### Gtk.Widget:overflow

How content outside the widget’s content area is treated.

###### Gtk.Widget:parent

The parent widget of this widget.

###### Gtk.Widget:receives-default

Whether the widget will receive the default action when it is focused.

###### Gtk.Widget:root

The `GtkRoot` widget of the widget tree containing this widget.

###### Gtk.Widget:scale-factor

The scale factor of the widget.

###### Gtk.Widget:sensitive

Whether the widget responds to input.

###### Gtk.Widget:tooltip-markup

Sets the text of tooltip to be the given string, which is marked up with Pango markup.

###### Gtk.Widget:tooltip-text

Sets the text of tooltip to be the given string.

###### Gtk.Widget:valign

How to distribute vertical space if widget gets extra space.

###### Gtk.Widget:vexpand

Whether to expand vertically.

###### Gtk.Widget:vexpand-set

Whether to use the `vexpand` property.

###### Gtk.Widget:visible

Whether the widget is visible.

###### Gtk.Widget:width-request

Overrides for width request of the widget.

##### Properties inherited from GtkAccessible (1)

###### GtkAccessible:accessible-role

The accessible role of the given `GtkAccessible` implementation.

##### Properties inherited from GtkActionable (2)

###### GtkActionable:action-name

The name of the action with which this widget should be associated.

###### GtkActionable:action-target

The target value of the actionable widget’s action.

#### Signals

###### Gtk.ToggleButton::toggled

Emitted whenever the `GtkToggleButton`‘s state is changed.

##### Signals inherited from GtkButton (2)

###### GtkButton::activate

Emitted to animate press then release.

###### GtkButton::clicked

Emitted when the button has been activated (pressed and released).

##### Signals inherited from GtkWidget (13)

###### GtkWidget::destroy

Signals that all holders of a reference to the widget should release the reference that they hold.

###### GtkWidget::direction-changed

Emitted when the text direction of a widget changes.

###### GtkWidget::hide

Emitted when `widget` is hidden.

###### GtkWidget::keynav-failed

Emitted if keyboard navigation fails.

###### GtkWidget::map

Emitted when `widget` is going to be mapped.

###### GtkWidget::mnemonic-activate

Emitted when a widget is activated via a mnemonic.

###### GtkWidget::move-focus

Emitted when the focus is moved.

###### GtkWidget::query-tooltip

Emitted when the widget’s tooltip is about to be shown.

###### GtkWidget::realize

Emitted when `widget` is associated with a `GdkSurface`.

###### GtkWidget::show

Emitted when `widget` is shown.

###### GtkWidget::state-flags-changed

Emitted when the widget state changes.

###### GtkWidget::unmap

Emitted when `widget` is going to be unmapped.

###### GtkWidget::unrealize

Emitted when the `GdkSurface` associated with `widget` is destroyed.

##### Signals inherited from GObject (1)

###### GObject::notify

The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.

#### Class structure

    struct GtkToggleButtonClass {
      GtkButtonClass parent_class;
      void (* toggled) (
        GtkToggleButton* toggle_button
      );

    }

No description available.

###### Class members

`parent_class: GtkButtonClass`

  No description available.

`toggled: void (* toggled) ( GtkToggleButton* toggle_button )`

  No description available.

#### Virtual methods

###### Gtk.ToggleButtonClass.toggled

Emits the ::toggled signal on the `GtkToggleButton`.

deprecated: 4.10